它是否使用某种字节码修改原始类?
或者,也许Hibernate通过将给定对象与以前持久化的版本进行比较来获得脏状态?
我遇到了复杂对象的问题hashCode()和equals()方法.如果对象具有集合成员,并且循环引用也是一个问题,我觉得计算哈希代码会很慢.
如果Hibernate不会使用hashCode()/ equals()来检查脏状态,我想我不应该使用equals()/ hashCode()作为实体对象(而不是值对象),但我也担心如果相同的operator(==)是不够的.
所以,问题是:
Hibernate如何知道对象的属性是否发生了变化?
你建议覆盖复杂对象的hashCode()/ equals()方法吗?如果它们包含循环引用怎么办?
并且,
是hashCode()/ equals()只有这个id领域就足够了?