In fact, some functionality is available only to classes which declare an
identifier property:
• Transitive reattachment for detached objects (cascade update or cascade
merge) - see Section 10.11, “Transitive persistence”
• Session.saveOrUpdate()
• Session.merge()
虽然hibernate并不要求每一个要被持久化的对象都有一个id标识,但是有一些方法只对有id标识的对象有效。
A central feature of Hibernate, proxies, depends upon the persistent class
being either non-final, or the implementation of an interface that declares all
public methods.
You can persist final classes that do not implement an interface with
Hibernate, but you won't be able to use proxies for lazy association fetching -
which will limit your options for performance tuning.
You should also avoid declaring public final methods on the non-final
classes. If you want to use a class with a public final method, you must
explicitly disable proxying by setting lazy="false".
为了使用hibernate的一些核心特性(例如懒加载),尽量将要被持久化的类设置成非final的,并且要确保持久化类实现的interface不要含有非public的方法。 If you want to use a class with a public final method, you must
explicitly disable proxying by setting lazy="false".