延迟载入:

仅仅有当使用以实体对象的属性(除主键属性外)时,才会发送查询语句到数据库

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的作用域内有效

最新文章

  1. c语言内存原理
  2. selenium获取Cookie操作
  3. IO复用三种方式
  4. GDB中汇编调试
  5. 【转】Hibernate级联注解CascadeType参数详解
  6. win7 下加载MSCOMCTL.OCX
  7. 一个不错的安卓下ssh客户端
  8. CentOS 6.5 EasyPR环境搭建
  9. s3c2440 J-flash 烧写 NOR flash
  10. Java:文件类File的详解
  11. javascript 关于闭包的知识点
  12. 【网络协议】TCP中的四大定时器
  13. angularjs-1.3代码学习 模块
  14. [ 随手记6 ] C/C++ 形参、实参、按值传参、指针传参、引用传参
  15. LinkedBlockingQueue源码分析
  16. b总结
  17. CC2 条理分明-----AACTP教你谈恋爱
  18. CentOS下安装VirtualBox
  19. url中传递中文参数时的转码与解码
  20. java学习之switch 等值判断

热门文章

  1. Android 获取屏幕截图 和保存到本地的sd卡路径下
  2. 在Kali上安装打印机
  3. 解析RecyclerView(2)——带顶部View和底部View的RecyclerView
  4. 敬请关注 Linr 公众号
  5. Golden Gate 相关组件介绍:
  6. Sentry: Python 实时日志平台
  7. Ubuntu 16.04安装Caffe的记录及FCN官方代码的配置
  8. Ubuntu下快速配置Caffe
  9. vue 中判断向上滚动还是向下滚动
  10. 解决MYSQL的错误:Got a packet bigger than 'max_allowed_packet' bytes