最佳答案
它是否对原始类使用了某种字节码修改?
或者,也许 Hibernate 通过比较给定对象和以前持久化的版本来获得脏状态?
对于复杂的对象,我遇到了 hashCode()和 equals()方法的问题。如果对象具有集合成员,并且循环引用也是一个问题,那么我认为计算哈希代码会非常慢。
如果 Hibernate 不使用 hashCode()/equals()来检查脏状态,我想我不应该使用 equals()/hashCode()来检查实体对象(不是值对象) ,但是我也担心同样的操作符(==)是不够的。
所以,问题是:
Hibernate 如何知道对象的属性是否已更改?
是否建议重写复杂对象的 hashCode()/equals()方法? 如果它们包含循环引用怎么办?
还有,
只有 id字段的 hashCode()/equals()是否足够?