hibernate集合的加载策略
在集合方配置lazy和fetch的方式,默认的是lazy为true,fetch为select,lazy有true,extra和false,true和extra都是懒加载,只是extra比true更懒,区别就是extra加载集合list.size()时只发送count(*)加载仅仅一个总数,其他情况和true没有区别,为true/extra时需要注意session不要关闭,不然后续的集合属性获取就没法获取了,会报no session的错误,而fetch有select,join,subselect3种,其实也就是去数据库中获取数据时发送sql的形式不同,select为分开单独用查询对象和集合,而join为以对象为主的left join一起关联查询出来,此时lazy为true已经失效,这些配置适用于对象导航查询和QBC查询,因为对象导航查询无需自己写sql,所以Hibernate默认会根据配置的方式决定发送sql的形式,如果是HQL语句查询,这些配置没啥卵用,一般情况不需要自己额外进行配置这两个属性,以免出现麻烦,需要配置的也就是一个是否放弃外键维护inverse="true",其他的建议一概使用默认。Hibernate查询方式根据程序员指定的hql语句进行查询,如hql中写了left join后那么Hibernate就按照left join进行查询,如果没写left join默认按照select单表查询,需要注意的是hql用left关联查询时,如果不写fetch那么返回的是两个对象而不是以属性组装的形式返回
<set name="linkmans" inverse="true" lazy="true" fetch="select">
<key column="lkm_cust_id"/>
<one-to-many class="com.cb.pojo.Linkman"/>
</set>
left join的fetch抓取,注意不用写on条件,但是得有别名进行关联
from Customer c left join fetch c.linkmans
hibernate集合的加载策略的更多相关文章
- hibernate学习(6)——加载策略(优化)
1. 检索方式 1 立即检索:立即查询,在执行查询语句时,立即查询所有的数据. 2 延迟检索:延迟查询,在执行查询语句之后,在需要时在查询.(懒加载) 2. 检查策略 1 类级别检索:当前的类的 ...
- hibernate框架学习之数据抓取(加载)策略
Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...
- Hibernate 加载策略得总结
Hibernate 加载策略得总结 加载策略(优化查询): 策略种类: 延迟加载: 等到使用的时候才会加载数据. 立即加载: 不管使用不使用,都会立刻将数据加载. 策略的应用: 类级别的加载策略. 关 ...
- java之hibernate之加载策略和抓取策略
1.加载策略:指hibernate查询数据时,采用什么样的方式将数据写入内存.Hibernate中提供了两种方式来加载数据:懒加载和即时加载. 2.懒加载又称延迟加载,指使用hiberante API ...
- hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...
- hibernate的懒加载
WHY? WHAT? HOW? 所谓懒加载(lazy)就是延时加载,延迟加载.即不是不加载,而是在需要的时候才加载. 什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载. 至于为什么要用懒加载呢 ...
- hibernate的懒加载问题
产生原因: 当使用hibernate查询一个对象的时候,如果Session关闭,再调用该对象关联的集合或者对象的时候,会产生懒加载异常! 解决方案: 方案一: 在Session关闭之前,查询对象关联的 ...
- 【死磕 Spring】----- IOC 之 Spring 统一资源加载策略
原文出自:http://cmsblogs.com 在学 Java SE 的时候我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Reso ...
- 【sping揭秘】6、IOC容器之统一资源加载策略
Spring中的resource 我们先看看类之间的关系 注意我们的application是间接继承了resourceloader的,也就是说我们的application其实就是一个resourcel ...
随机推荐
- Laravel 的中大型专案架构
好文:http://oomusou.io/laravel/laravel-architecture/
- ios数据存储方式FMDB
本文转载至 http://blog.csdn.net/chen505358119/article/details/9289489 分类: ios2013-07-10 14:05 2471人阅读 评论( ...
- PowerDesigner之设置(3)——根据Name首字母生成Code
SQL版本:2000 PowerDesigner版本:16 网上有不少介绍 PowerDesigner Name/Code自动调整 的文章,但基本如出一辙. 这里,我就介绍下如何根据输入的Name根据 ...
- 使用EasyNVR无插件流媒体服务器接口和EasyPlayer.js播放器插件实现web网页H5播放无插件
1.背景需求 很多客户在使用EasyNVR无插件流媒体服务器时,不喜欢产品化的界面,有时可能满足不了日常观看使用的需求.因此软件提供丰富的HTTP接口,供第三方平台调用集成.但是有时客户这边可能没有专 ...
- 第一次打开Pycharm如何操作?
1.第一次打开pycharm的界面: 2.一些pycharm的选择: 3.上一步,红字4的位置,点击进去,对下面界面进行选择,也就是选择System Interpreter解释器,然后对Interpr ...
- php自定义函数: 文件大小转换成智能形式
function format_byte($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 107 ...
- 如何枚举 Windows 顶级桌面窗口?
bool is_top_level_window(HWND hwnd) { if (!IsWindow(hwnd)) return false; DWORD dw_style = GetWindowL ...
- return和yield的区别
# return 返回给调用者值,并结束此函数.#yiled 返回给调用者值,并将指针停留着当前位置.
- Python3.6全栈开发实例[026]
27.文件a.txt内容:每一行内容分别为商品名字,价钱,个数.apple 10 3tesla 100000 1mac 3000 2lenovo 30000 3chicken 10 3通过代码,将其构 ...
- MySql 自适应哈希索引
一.介绍 哈希(hash)是一种非常快的查找方法,一般情况下查找的时间复杂度为O(1).常用于连接(join)操作,如Oracle中的哈希连接(hash join). InnoDB存储引擎会监控对表上 ...