HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Сравнение сущностей обладает своими особенностями, которые значительно влияют на код. В этом уроке вы узнаете, чем сравнение сущностей отличается от обычных Java-объектов.</p>
1 <p>Сравнение сущностей обладает своими особенностями, которые значительно влияют на код. В этом уроке вы узнаете, чем сравнение сущностей отличается от обычных Java-объектов.</p>
2 <h2>Объект-значение</h2>
2 <h2>Объект-значение</h2>
3 <p>Разберем на примере. Ниже мы рассмотрим определение модели City, которая не считается сущностью. В таком случае проверка равенства выполняется на основе значения полей, в этом случае - имени. Если объект А представляет конкретный город, то другой объект с тем же городом - это тот же самый объект А:</p>
3 <p>Разберем на примере. Ниже мы рассмотрим определение модели City, которая не считается сущностью. В таком случае проверка равенства выполняется на основе значения полей, в этом случае - имени. Если объект А представляет конкретный город, то другой объект с тем же городом - это тот же самый объект А:</p>
4 <p>В таком случае метод equals() легко реализуется с помощью Lombok:</p>
4 <p>В таком случае метод equals() легко реализуется с помощью Lombok:</p>
5 <p>Для объектов такого рода существует термин<a>Value Object</a>. Это объекты, которые представляют собой какое-то значение - например, адрес. Они сравниваются на основе своего значения или значений набора полей.</p>
5 <p>Для объектов такого рода существует термин<a>Value Object</a>. Это объекты, которые представляют собой какое-то значение - например, адрес. Они сравниваются на основе своего значения или значений набора полей.</p>
6 <h2>Сущность</h2>
6 <h2>Сущность</h2>
7 <p>В отличие от обычных Java-объектов, у сущностей есть<strong>идентификация</strong>. Другими словами, у каждой сущности есть свой уникальный идентификатор, который обычно представлен числом. Этот идентификатор однозначно указывает, с какой сущностью мы имеем дело независимо от того, совпадает ли содержимое других полей у этих сущностей:</p>
7 <p>В отличие от обычных Java-объектов, у сущностей есть<strong>идентификация</strong>. Другими словами, у каждой сущности есть свой уникальный идентификатор, который обычно представлен числом. Этот идентификатор однозначно указывает, с какой сущностью мы имеем дело независимо от того, совпадает ли содержимое других полей у этих сущностей:</p>
8 <p>Равенство или неравенство остальных данных этих объектов не имеет значения. Объекты равны только тогда, когда совпадают идентификаторы. Если идентификаторы не совпадают, то объекты не равны.</p>
8 <p>Равенство или неравенство остальных данных этих объектов не имеет значения. Объекты равны только тогда, когда совпадают идентификаторы. Если идентификаторы не совпадают, то объекты не равны.</p>
9 <p>Реализовать такое поведение можно с помощью той же аннотации @EqualsAndHashCode. Единственное отличие от предыдущего примера состоит в том, что мы явно указываем необходимость сравнения только по идентификатору:</p>
9 <p>Реализовать такое поведение можно с помощью той же аннотации @EqualsAndHashCode. Единственное отличие от предыдущего примера состоит в том, что мы явно указываем необходимость сравнения только по идентификатору:</p>
10  
10