hibernate框架的查询优化(二十三)
来源:互联网 发布:管家婆进销存软件 价格 编辑:程序博客网 时间:2024/06/04 20:02
一、延迟加载
延迟加载先获取到代理对象,当真正使用到该对象中的属性的时候,才会发送SQL语句,是Hibernate框架提升性能的方式
1.1 类级别的延迟加载
Session对象的load方法默认就是延迟加载
Customer c = session.load(Customer.class, 1L);没有发送SQL语句,当使用该对象的属性时,才发送SQL语句
1.1.1 session.get()不采用延迟加载
@Testpublic void run1() {Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();Customer c1 = session.get(Customer.class, 1L);System.out.println("=======================");System.out.println(c1.getCust_name());tx.commit();}
程序执行完get()方法就发出了SQL语句
1.1.2 session.load()采用延迟加载
程序执行完load()方法,未发出sql语句
调用对象方法时才去查询数据库
1.1.3 关闭load的延迟加载
使类级别的延迟加载失效
在<class>标签上配置lazy=”false”
Hibernate.initialize(Object proxy);
1.1.3.1 配置lazy
再看程序运行效果
先出现sql,后出现=====,说明,没有延迟加载
1.1.3.2 initialize
1.2 关联级别的延迟加载
关联级别的延迟加载(查询某个客户,当查看该客户下的所有联系人是是否是延迟加载)
默认是延迟加载
/** * 关联级别的延迟加载 * 说的是客户下的联系人的集合 */@Testpublic void run3() {Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();// 先查1号客户Customer c1 = session.get(Customer.class, 1L);System.out.println("=======================");// 看客户下所有的联系人System.out.println(c1.getLinkmans().size());tx.commit();}
等号前有sql,是查询customer的,等号后有sql,是查询linkman的,说明,默认情况下采用了延迟加载。
对于关联查询策略,请看下一篇。
阅读全文
0 0
- hibernate框架的查询优化(二十三)
- 对Hibernate框架的查询进行优化
- hibernate框架的查询方式QBC(二十)
- hibernate框架的查询方式sql语句(二十一)
- hibernate框架的查询策略(二十四)
- SSH框架之Hibernate的查询详解(2)、hql查询优化
- hibernate框架的查询方式hql的多表查询(二十二)
- (十三)Hibernate之程序性能优化的考虑要点
- 优化网站设计(二十三):减小Cookie的体积
- 优化网站设计(二十三):减小Cookie的体积
- 优化网站设计(二十三):减小Cookie的体积
- SQL查询和优化(十三)
- hibernate框架的查询方式(十九)
- hibernate查询(二)
- Hibernate查询(二)
- Hibernate框架(二)
- Hibernate框架(二)
- Hibernate框架(二)
- 购物车二级列表
- 深度学习---之pooling层的作用与缺陷
- Linux命令
- robotframework自动化系列:删除操作流程以及总结
- ART异常处理机制(2)
- hibernate框架的查询优化(二十三)
- Centos6.8 安装MySQL5.7
- strings.xml里字符串拼接、占位符和常用替换符号
- log4j
- ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
- 排序算法总结
- 【JDK1.8】JDK1.8集合源码阅读——TreeMap(一)
- 封装RxJava+Retrofit+OkHttp
- 横竖屏切换时候Activity的生命周期