HIbernate Lazy 常用配置
来源:互联网 发布:预编译sql 编辑:程序博客网 时间:2024/06/10 21:55
Lazy:延迟加载,在真正使用某个对象的时候才正真的去创建,即hibernate才会正真的发出sql语句去加载该对象
Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。
lazy策略可以用在:
1、 <class>标签上:可以取值true/false
* <property>标签上,可以取值true/false,这个特性需要类增强(不常用)
* 设置<class>标签中的lazy="true",或是保持默认(即不配置lazy属性)
* 如果lazy的属性值为true,那么在使用load方法加载数据时,只有确实用到数据的时候才会发出sql语句;这样有可能减少系统的开销。
注:<class>上的lazy只影响普通属性
2、集合(collection)的延迟加载,主要应用在<set>/<list>等集合上:可以取值true,false,extra (常用extra,比较智能)
* true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其集合元素的数据。
*false:取消延时加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据
*extra:一种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
3、单端关联延迟加载策略, 配置在<one-to-one>/<many-to-one>等标签上,可以取值false/proxy/no-proxy
*false:取消迟加加载策略,即在加载对象的同时,发出查询语句,加载其关联对象
*proxy(默认):这是hibernate对单端关联的默认懒加载策略,即只有在调用到其关联对象的方法的时候才真正发出查询语句查询其对象数据,其关联对象是代理类
*no-proxy:这种懒加载特性需要对类进行增强,使用no-proxy,其关联对象不是代理类
注:
1、load默认会开启延迟加载,而get不支持延迟加载。
2、当查询特定的数据库中不存在的数据时,get会返回null,而load则抛出异常。
延迟加载是一个非常有用的策略,但是有时候也会影响性能,例如:如果我们确定某个对象的关联对象会被使用,干脆一次都加载上来,比延迟加载性能要好些。总之使用lazy要根据实际需求,这也是为什么hibernate设置lazy有不同属性的原因。
- HIbernate Lazy 常用配置
- hibernate的lazy配置引起的问题
- hibernate的 lazy 和 fetch 如何配置
- hibernate的 lazy 和 fetch 一般配置
- Hibernate Lazy
- hibernate---->lazy
- Hibernate lazy
- Hibernate 延迟加载,lazy属性配置。以及org.hibernate.LazyInitializationException
- hibernate中的set集合配置lazy="extra"
- hibernate的 lazy 和 fetch 一般怎么配置
- hibernate的 lazy 和 fetch 一般怎么配置?
- hibernate 常用配置
- hibernate常用参数配置
- Hibernate常用配置属性
- Hibernate常用配置.
- hibernate常用配置
- <hibernate-mapping>常用配置
- Hibernate的常用配置
- opendir 、readdir 小结
- eclipse下调试android4.2的Launcher
- 学习AFNetworking
- Java jdbc连接oracle10g
- JBPM4.4之HelloWorld示例
- HIbernate Lazy 常用配置
- java程序员面试交流项目经验
- JAVA.IO流
- 代理模式
- 小例子一步一步解释“函数调用过程中栈的变化过程
- JBPM4.3安装全程记录
- 执行mvn命令,提示com/beust/jcommander/ParameterException
- 解决连接oracle服务器故障:TNS:listener does not currently know of SID given in connect descriptor
- fedora g++命令未找到问题