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 ...
随机推荐
- Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
今天在XCode6.3上面重写TabBar的时候,自己定义tabBar的代理遇到的一个问题 在重写tabBar的代理的时候遇到了一个警告. 解决方法: 在.m文件里 警告消失
- caffe-ssd使用预训练模型做目标检测
首先参考https://www.jianshu.com/p/4eaedaeafcb4 这是一个傻瓜似的目标检测样例,目前还不清楚图片怎么转换,怎么验证,后续继续跟进 模型测试(1)图片数据集上测试 p ...
- Java IO 基础
早上复习了IO.NIO.AIO相关的概念,将其中一些要点记录一下. 从编程语言层面 BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原 ...
- 个人作业—Alpha项目测试
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...
- oracle调优使用到相关sql
select * from v$session where username is not null;select username,count(username) from v$session wh ...
- Markdown标记语言
Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber).它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”.这种语言吸收了很 ...
- SQL基本语句:2.基本表
SQL基本表的增删改
- 编程范式(Programming Paradigm)-[ 程序员的编程世界观 ]
编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐 ...
- day10 强制类型转换(更新)
目录 强制类型转换 int() str() list() tuple() set() dict() 总结 强制类型转换 直接看总结 # 定义各个数据类型的值 num_int = 123 num_flo ...
- Day 04 [与用户交互,格式化输出,基本运算符]
Python 的与用户交互 name=input("请输入姓名:") height=input('请输入身高:') weight=input('请输入体重:') 在python3中 ...