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

Hibernate的lazy对策

2012-11-05 
Hibernate的lazy策略Hibernate的lazy策略Hibernate的lazy策略可以使用在:*class标签上,可以取值:true/fa

Hibernate的lazy策略

Hibernate的lazy策略

Hibernate的lazy策略可以使用在:

*<class>标签上,可以取值:true/false(只影响普通属性,不影响集合属性à集合上设置的还按集合上设置的lazy策略执行;不影响<manay-to-one>/<one-to-one>单端关联à<manay-to-one>/<one-to-one>单端关联标签上设置的还按照其设置的lazy策略执行)

*<property>标签上,可以取值:true/false (用的比较少,需要类增强工具,对字节码进行修改,如果某个属性时图片或是大文本可用)

*<set>\<list>标签上,可以取值:true/false/extra(建议集合上设置为extra,其余和true一样,只是在count 时true会把所有子类都加在到内存,再计算总数,而extra会智能地发一条count语句)

*<manay-to-one>/<one-to-one>单端关联标签上,可以取值,false/proxy/noproxy(需要增强工具)

lazy概念:只有真正需要对象的时候才会创建对象,对于hibernate而言,只有真正要使用的时候才会发出Sql语句 ,lazy的有效期就是session的有效期

Hibernate支持lazy策略只有在session打开状态下,为了保证Hibernate的lazy策略得以应用 提出了OpenSessionInView模式
在spring中 spring给我们实现了一个OpenSessionInViewFilter

JPA中也支持lazy策略,同样在spring中 spring给我们实现了一个org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
<class>标签上的lazy策略不会影响到集合上的lazy特性,也不会影响到<many-to-one>
<one-one-one> 单端关联上的lazy, 它只会影响到一般属性。

热点排行