hibernate之4.延迟载入
延迟载入:
仅仅有当使用以实体对象的属性(除主键属性外)时,才会发送查询语句到数据库
get不支持延迟载入
@Test
public void getTest(){
Session session=null;
Student student=null;
try{
session=HibernateUtil.openSession();
student=(Student) session.get(Student.class, 3);
System.out.println("id:"+student.getStudentId());
System.out.println("name:"+student.getStudentName());
}finally{
session.close();
}
}结果:
Hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
id:3
name:ddddd在调用get方法时,就已经发出查询语句
load支持延迟载入
@Test
public void loadTest(){
Session session=null;
Student student=null;
try{
session=HibernateUtil.openSession();
student=(Student) session.load(Student.class, 3);
System.out.println("id:"+student.getStudentId());
System.out.println("name:"+student.getStudentName());
}finally{
session.close();
} }结果:
id:3
Hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
name:ddddd在调用load方法,返回一个代理对象,此时并没有发出查询语句,当须要使用studentName属性时,再发出查询语句
关闭session后
get:
@Test
public void get2Test(){
Session session=null;
Student student=null;
try{
session=HibernateUtil.openSession();
student=(Student) session.get(Student.class, 3);
}finally{
session.close();
}
System.out.println("id:"+student.getStudentId());
System.out.println("name:"+student.getStudentName());
}结果:
Hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=? id:3
name:ddddd与在session作用域中的结果一样
load
@Test
public void load2Test(){
Session session=null;
Student student=null;
try{
session=HibernateUtil.openSession();
student=(Student) session.load(Student.class, 3);
}finally{
session.close();
}
System.out.println("id:"+student.getStudentId());
System.out.println("name:"+student.getStudentName());
}结果:
id:3
org.hibernate.LazyInitializationException: could not initialize proxy - no Session抛异常了,可见延时载入仅仅在session的作用域内有效
小结:
1.仅仅有当使用以实体对象的属性(除主键属性外)时,才会发送查询语句到数据库
2.延时载入仅仅在session的作用域内有效
hibernate之4.延迟载入的更多相关文章
- hibernate 普通字段延迟载入无效的解决的方法
关联对象的延迟载入就不说了.大家都知道. 关于普通字段的延迟载入,尤其是lob字段,若没有延迟载入,对性能影响极大.然而简单的使用 @Basic(fetch = FetchType.LAZY) 注解并 ...
- Hibernate 延迟载入
一.延迟载入定义 延迟载入,也叫懒载入,它是Hibernate为提高程序运行效率而提供的一种机制,即当仅仅有真正使用该对象的数据时才会创建. 说白了,所谓的延迟载入不是 ...
- Hibernate中的session和load延迟载入矛盾问题,怎样解决?
假设延迟载入出现session close的情况下 方法1.在web.xml中配置spring的openSessionInViewFilter <filter> <filter-n ...
- 50个Android开发技巧(02 延迟载入和避免反复渲染视图)
当你在Application中创建复杂的布局时.页面的渲染过程也变得更加缓慢. 此时,我们须要利用 <include />标签(避免反复渲染)和 ViewStub类(延迟载入)来优化我们的 ...
- 原声JS瀑布流加延迟载入
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 延迟载入Dll(动态载入Dll)
windows核心编程(第五版)20.3节的延迟载入Dll 延迟载入Dll技术出现的原因: 因为DLL的加载是比较浪费时间的,特别是大型软件加载,因此,这项技术是在应对软件初始化过程中避免浪费太多的时 ...
- Hibernate级联操作和载入机制(二) cascade and fetch
上一篇介绍了Hibernate持久化对象时候的级联操作.本篇介绍读取时候的级联操作. 还是用上一篇的样例.一份问卷有多个问题.可是每一个问题仅仅能属于一份问卷. 我们先看測试用例: @Test pub ...
- Hibernate与代理模式
代理模式:当须要调用某个对象的时候.不须要关心拿到的是不是一定是这个对象,它须要的是,我拿到的这个对象能够完毕我想要让它完毕的任务就可以,也就是说.这时调用方能够拿到一个代理的一个对象,这个对象能够调 ...
- 2014最新SSH框架面试题大收集
(1)Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transati ...
随机推荐
- HTML5 格式化方式以及应用
<b>加粗字体 <big>定义大号字体 <em>定义着重文字 <i>定义斜体字 <small>定义小号字体 <strong>定义 ...
- angularjs1-8,cacheFactory,sce
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- redis.conf 配置项说明
redis.conf 配置项说明如下: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 当Redis以守护进程方式运行时,Redis ...
- WEBSERVICE之JDK开发webservice
转自:https://www.cnblogs.com/w-essay/p/7357262.html 一.开发工具与环境 1. jdk1.6版本以上(jdk1.6.0_21及以上版本) 2 .eclip ...
- 用户命令切换-命令su
命令su格式为su [-] username su su - su test su root
- QEMU/KVM磁盘在线备份
QEMU/KVM磁盘的在线完整及增量备份,是"打包"方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复. tag: qemu, k ...
- CentOS 7 NAT模式上网配置
一 VMware 配置 在“编辑”选项卡中,选择“虚拟网络编辑器”,如下图: 选择VMnet8,修改子网IP与子网掩码,注意不要给“使用本地DHCP服务将IP地址分配给虚拟机”选项打勾,如下图: 点击 ...
- JVM源码分析之javaagent原理完全解读--转
原文地址:http://www.infoq.com/cn/articles/javaagent-illustrated 概述 本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员 ...
- ViewPager滑动到最后一页再向左滑动进入主界面
在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1 ...
- Thinkphp开源框架如何使用?
(一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置.杭州php操作演示如图: 其中index.php是入口文件,即所有的请求都要经过此文件才能够完成.Applicati ...