



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate懒加载深入分析2011-04-29 19:4294人阅读评论(0)收藏举报-懒加载可以提高性能吗?不可以简单的说能,因为Hibernate的关系映射拖累了SQL的性能,所以想出懒加载来弥补.只是弥补而以,不会超越.所以大家不要想着使用了懒加载总体性能就提高了,其实总体性能不下降就万幸了.-Hibernate的lazy属性可以配置在:(常用)标签上,可以取值true,false,extra 默认为true,当为true时,会懒加载,访问集合属性时再发出SQL语句.但set.size()时,很不智能,不会生成count()语句,而是查出所有记录赋值给set. extra说明:调用集合的set.size()时,会生成select count(*)from tableName,比较智能.建议使用(少用)标签上,可以取值false,proxy,noproxy 当为true时,会有懒加载特性,当为false时会产生N+1问题,比如一个学生对应一个班级,用一条SQL查出10个学生,当访问学生的班级属性时Hibernate会再产生10条SQL分别查出每个学生对应的班级.(不用)标签上,可以取值true,false 默认为true,当为false时,load()方法将失去懒加载的特性与get()一样,不影响集合()标签上的lazy特性(不用)标签上,可以取值true,false 默认值为false,懒加载某个字段,无意义,不要使用-get()与load()的区别get()无懒加载特性,马上执行SQL查询.load()有懒加载特性,会返加一个代理对象,所以永远不为null,先不执行SQL,要取对象的值时才执行SQL语句,前题session不能关闭,标签上lazy不为false.-实现懒加载的前提:1 PO不能是final的2 能实现懒加载的对象(PO)都是被CGLIB改写的代理对象,所以不能是final修饰的3 须要asm,cglib两个jar包4 相应的lazy属性为true5 相应的fetch属性为select-什么时候出遇到懒加载1 使用load()2 一对一查主对象 默认使用join连接,不会发生懒加载查从对象 默认会发生懒加载,先执行一句select查出从对象,当通过从对象访问了主对象时,再执行一句select查出主对象.3 多对一在使用hbm.xnl时,取多的一方时,默认会懒加载,不取一的一方在使用JPA时,取多的一方时,默认自动使用join on语句取出一的一方(用户与组,用户是多的一方,组是一的一方)4 一对多()默认会懒加载,这是必须的,是重常用的。-实现懒加载的方案:方法一:(没有使用懒加载)用 Hibernate.initialize(de.getEmps() 提前加载一下.方法二:把与Session脱离的对象重新绑定lock()方法是用来让应用程序把一个未修改的对象重新关联到新session的方法。/直接重新关联session.lock(fritz, LockMode.NONE);/进行版本检查后关联session.lock(izi, LockMode.READ);/使用SELECT . FOR UPDATE进行版本检查后关联session.lock(pk, LockMode.UPGRADE);方法三:OpenSessionInView参见 /topic/32001fetch 和 lazy 配置用于数据的查询lazy 参数值常见有 false 和 true,Hibernate3 映射文件中默认lazy = true ;fetch 指定了关联对象抓取的方式,参数值常见是select和join,默认是select, select方式先查询主对象,再根据关联外键,每一个对象发一个select查询,获取关联的对象,形成了n+1次查询;而join方式,是left outer join查询,主对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。在映射文件中,不同的组合会使用不同的查询:1、lazy=true fetch = select ,使用延迟策略,开始只查询出主对象,关联对象不会查询,只有当用到的时候才会发出sql语句去查询 ;2、lazy=false fetch = select ,没有用延迟策略,同时查询出主对象和关联对象,产生1+n条sql.3、lazy=true或lazy=false fetch = join,延迟都不会作用,因为采用的是外连接查询,同时把主对象和关联对象都查询出来了.另 外,在hql查询中,配置文件中设置的join方式是不起作用的,而在其他查询方式如get、cri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度电商平台运营团队入职培训合同范本
- 二零二五年度光纤宽带接入与宽带提速服务合同
- 二零二五年度国际广告宣传代理合同
- 2025版建筑渣土运输与污水处理服务合同范本
- 二零二五版美容院员工培训与技术交流合同
- 二零二五版海外房地产项目劳务派遣劳动合同
- 2025版咖啡厅租赁合同书(含人力资源管理与培训)
- 2025电商产品研发与运营合作协议书0814
- 2025版房地产广告代理服务与技术支持合作协议
- 二零二五年度返聘研发人员知识产权保护合同
- 体育机构推广方案模板(3篇)
- 园区改造运营方案(3篇)
- 2025年大学辅导员考试题库真题及答案
- 腮红画法教学课件
- 二零二五版便利店员工劳动合同模板
- 弱电设备运输方案模板(3篇)
- 2025-2030中国重水市场运行态势与未来竞争力剖析报告
- 企业职工感恩教育
- GB 17051-2025二次供水设施卫生规范
- 品牌管理部组织架构及岗位职责
- 临沧市市级机关遴选真题2024
评论
0/150
提交评论