hibernate中的延迟加载策略一定程度上降低了内存开销,但是有时候使用会出现不想要的异常。
首先,hibernate hbm 中lazy属性(true|false),在hibernate中默认lazy是true。
Hibernate中允许使用延迟加载的地方主要有以下几个地方:
<hibernate-mapping default-lazy=(true|false)”true”>:设置全局的延迟加载策略。
<class lazy=(true|false)>:DTD没设置默认值,推理默认值为true (在不同的hibernate中,lazy的默认值不同)
<property lazy=(true|false)>:设置字段延迟加载,默认为false
<component lazy=(true|false):默认为false
<subclass lazy=(true|false)>:默认设置为true
<join-subclass lazy=(true|false)>:默认设置为true
<union-subclass lazy=(true|false)>:默认设置为true
<many-to-one lazy=(proxy|no-proxy|false)>:默认为proxy
<one-to-one lazy=(proxy|no-proxy|false)>:默认为proxy
<map lazy=(true|extra|false)>:默认为true
<set lazy=(true|extra|false)>:默认为true
<bag lazy=(true|extra|false)>:默认为true
<ibag lazy=(true|extra|false)>:默认为true
<list lazy=(true|extra|false)>:默认为true
当我们在做级联操作时,如果异常信息如下。四月 25, 2017 9:23:19 上午 org.hibernate.proxy.pojo.javassist.JavassistProxyFactory getProxy
ERROR: HHH000142: Javassist Enhancement failed: cn.itsure.entity.User
java.lang.NoClassDefFoundError: javassist/util/proxy/Proxy