lazy 策略

lazy可以用在class、property、集合、one-to-one、many-to-one标签上。

1. class标签:可以取值lazy ="true/false" ,hibernate3.x以上默认true。

2. property标签:true/false,需要类增强工具,用的不多。

3. set、list标签:true/false/extra

4. one-to-one、many-to-one(单端关联上):可以取值 false/proxy/noproxy

lazy概念: 只有真正使用该对象时才会创建,对于hibernate而言,真正使用的时候才会发出sql。 Lazy的有效期:只有在session打开的时候才有效;

1.class标签上的lazy只会影响到普通属性的加载,而不会影响到集合标签的懒加载,如果在class标签上设置了lazy为false,那么只要一调用session.load方法,sql就会发出,并在缓存中加载上了普通属性,但是集合属性里的值还是未加载的,什么时候真正用到集合中的数据才会去加载,这样降低了系统开销。

2. 单端关联的标签上的lazy默认是proxy(代理),效果和集合的lazy = true一样,只有用到时才发sql语句。

猜你喜欢

转载自dchengquan53390.iteye.com/blog/1064255