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