首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate中的lazy对策

2012-08-22 
Hibernate中的lazy策略hibernate lazy策略可以使用在:* class可以取值true/false* property标签上,可

Hibernate中的lazy策略
hibernate lazy策略可以使用在:

* <class>可以取值true/false

* <property>标签上,可以取值,true/false需要类增前工具

* <set><list>标签上,可以取值:true/false/extra

* <one-to-one><many-to-one>单端关联上,可以取值:false/proxy/noproxy



lazy概念,只有真正使用该对象时,才会创建,对于hibernate而言,真正使用的时候才会发出sql



hibernate支持lazy策略只有在session打开状态下有效,OpenSessionInView



1.class标签上的lazy特性只对普通属性起作用

默认配置下(lazy="true"),load查询支持延迟加载,并且生成的对象为代理对象

设置Class标签上的lazy="false",load查询不再支持延迟加载,生成的对象为真实对象

class标签上的lazy属性,之对load方式的查询起作用,get方式不支持延迟加载



默认配置下也就是支持延迟加载的情况下,get方式得到的对象再session关闭后依然可以得到对象的属性

时而load方式 则会抛出异常,因为延迟加载,真正访问到对象的方法的的候要到数据库中查询,而此时session已经关闭了。



默认支持延迟加载情况下,load的时候,对象里面的所有的普通属性会被查询出来。



2.hibernate在集合上的lazy策略,可以取值true/false/extra



<class>标签上的lazy不会影响到集合上的lazy特性

设置集合 标签上的lazy="extra"会根据查询内容发出智能的sql语句,不会查询出所有关联对象,例如students.size(),只会发出

select  count(*) from…..



3.hibernate在单端关联上的lazy策略,可以取值,false/proxy/noproxy

默认为proxy



<class>标签上的lazy属性不会影响到单端关联上的lazy特性




热点排行