Hibernate初探【3】Session中get()和load()的区别
2016-05-20 21:19
351 查看
准备测试数据(三条)
![](http://img.blog.csdn.net/20160520212430578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1、get()方法直接返回实体类,如果查不到数据则返回null。load()会
返回一个实体代理对象(当前这个对象可以自动转化为实体对象),
但当代理对象被调用时,如果没有数据不存在,就会抛出个
org.hibernate.ObjectNotFoundException异常
![](http://img.blog.csdn.net/20160520212712972?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
load得到的代理对象还没有使用,所以还没有被实例化,因此没有报错
一旦使用,则抛出org.hibernate.ObjectNotFoundException异常
![](http://img.blog.csdn.net/20160520212934352?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.load先到缓存(session缓存/二级缓存)中去查,如果没有则返回一个
代理对象(不马上到DB中去找),等后面使用这个代理对象操作的时
候,才到DB中查询,这就是我们常说的load在默认情况下支持延迟加
载(lazy)
load方法同样可以使用以下检验get方式检测
3. get先到缓存(session缓存/二级缓存)中去查,如果没有就到DB中去
查(即马上发出sql)。总之,如果你确定DB中有这个对象就用
load(),不确定就用get()(这样效率高)
1、get()方法直接返回实体类,如果查不到数据则返回null。load()会
返回一个实体代理对象(当前这个对象可以自动转化为实体对象),
但当代理对象被调用时,如果没有数据不存在,就会抛出个
org.hibernate.ObjectNotFoundException异常
load得到的代理对象还没有使用,所以还没有被实例化,因此没有报错
一旦使用,则抛出org.hibernate.ObjectNotFoundException异常
2.load先到缓存(session缓存/二级缓存)中去查,如果没有则返回一个
代理对象(不马上到DB中去找),等后面使用这个代理对象操作的时
候,才到DB中查询,这就是我们常说的load在默认情况下支持延迟加
载(lazy)
load方法同样可以使用以下检验get方式检测
3. get先到缓存(session缓存/二级缓存)中去查,如果没有就到DB中去
查(即马上发出sql)。总之,如果你确定DB中有这个对象就用
load(),不确定就用get()(这样效率高)
Employee e=(Employee) ss.get(Employee.class,3); Employee ee=(Employee) ss.get(Employee.class,3);两次查询,第一次将生成Hql语句,而第二次get将从hibernate缓存中进行查找
<img src="http://img.blog.csdn.net/20160520214104382?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-size:14px;" alt="" />若两次get都是查询不存在的对象
Employee e=(Employee) ss.get(Employee.class,4); Employee ee=(Employee) ss.get(Employee.class,4);
相关文章推荐
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- Hibernate实现批量添加数据的方法
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- 深入理解Hibernate中的flush机制
- 简要分析Java的Hibernate框架中的自定义类型
- 简单的手工hibernate程序示例