Используется ли какая-либо модификация байтовых кодов исходным классам?
Или, может быть, Hibernate получает грязное состояние, сравнивая данный объект с ранее сохраненной версией?
У меня проблема с методами hashCode()
и equals()
для сложных объектов. Я считаю, что было бы очень медленно вычислять хэш-код, если у объекта есть члены коллекции, а также циклические ссылки.
Если Hibernate не будет использовать hashCode()
/equals()
, чтобы проверить грязное состояние, я полагаю, что я не должен использовать equals()
/hashCode()
для объекта сущности (не объекта значения), но я также боится, если одного и того же оператора (==
) недостаточно.
Итак, вопросы:
-
Как Hibernate знает, изменилось ли свойство объекта?
-
Вы предлагаете переопределить методы
hashCode()
/equals()
для сложных объектов? Что делать, если они содержат циклические ссылки?И, также,
-
Достаточно ли
hashCode()
/equals()
только с полемid
?