Hibernate复习之Hibernate 检索策略
今日目录:
1、检索策略属性 Lazy
2、检索策略属性 batch-size
3、检索策略属性 Fetch
一、检索策略属性 Lazy
Lazy:true (默认) 延迟检索 ;set 端 一对多
Lazy:false 立即检索;set 端 一对多
Lazy:extra 增强延迟检索; set 端 一对多
Lazy:proxy(默认) 延迟检索;many-to-one 多对一
Lazy:no-proxy 无代理延迟检索;many-to-one 多对一 (需要编译时字节码增强)
二、检索策略属性 batch-size
1、批量延迟检索;
优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;
缺点:应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;
适用范围:(1)一对多或者多对多关联。(2)应用程序不需要立即访问或者根本不会访问的对象。
2、批量立即检索;
优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;
缺点:应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;
适用范围:(1)一对多或者多对多关联。(2)应用程序不需要立即访问或者根本不会访问的对象。
三、检索策略属性 Fetch
1、Fetch:select(默认) 查询方式;
2、Fetch:subselect 子查询方式;
3、Fetch:join 迫切左外连接查询方式;
4、迫切左外连接检索
优点:
- 对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。
- 使用了外连接,select语句数目少;
缺点:
- 可能会加载应用程序不需要访问的对象,白白浪费许多内存空间;
- 复杂的数据库表连接也会影响检索性能。
适用范围:
(1)多对一或者一对一关联。
(2)应用程序需要立即访问的对象。
(3)数据库系统具有良好的表连接性能
Class.java
Student.java
Class.hbm.xml
Student.hbm.xml
StudentTest.java
添加小编微信(y19970821ywty)可以获取工具,资源,二维码
要用到的工具,视频教程,关注公众号(Java学习之乐)直接免费获取:
还没有评论,来说两句吧...