apple0668
TDD,Agile,Scrum,Core Java,J2EE,Investment Blank
BlogJava
首页
新随笔
聚合
管理
随笔-61 评论-159 文章-0 trackbacks-0
系统学习hibernate之二:Session中load和get
用hibernate的ORM框架有一段时间了,现在来回顾一下Seesion中的load和get。
一、
get不支持lazy,load支持lazy。
二、采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常。
get的例子:
1
public
void
testGetMethod()
{
2
Session session
=
null
;
3
try
{
4
session
=
HibernateUtils.getSession();
5
session.beginTransaction();
6
7
//
马上发出查询sql,加载User对象
8
User user
=
(User)session.get(User.
class
,
"
402880d01b9bf210011b9bf2c2ff0002
"
);
9
System.out.println(
"
user.name=
"
+
user.getName());
10
11
user.setName(
"
张三
"
);
12
session.getTransaction().commit();
13
}
catch
(Exception e)
{
14
e.printStackTrace();
15
session.getTransaction().rollback();
16
}
finally
{
17
HibernateUtils.closeSession(session);
18
}
19
}
PS:在执行第8行语句的时候,如果数据库有相关的记录,则立刻发出sql语句,即使是没有第9行中user.getName()方法调用,如果没有匹配的记录则返回来一个null。
load方法例子:
1
public
void
testLoadMethod()
{
2
Session session
=
null
;
3
try
{
4
session
=
HibernateUtils.getSession();
5
session.beginTransaction();
6
7
//
不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
8
//
延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
9
//
hibernate延迟加载实现原理是代理方式
10
User user
=
(User)session.load(User.
class
,
"
402880d01b9bf210011b9bf2b2ff0002
"
);
11
System.out.println(
"
user.name=
"
+
user.getName());
12
user.setName(
"
李四
"
);
13
session.getTransaction().commit();
14
}
catch
(Exception e)
{
15
e.printStackTrace();
16
session.getTransaction().rollback();
17
}
finally
{
18
HibernateUtils.closeSession(session);
19
}
20
}
PS:在执行到10句代码的时候并没有立刻发出sql语句,由于load实现了lazy延迟加载,延迟加载只有真正使用该对象的时候才进行加载,发出sql语句,关键是11句代码。如果load方法里面的id在数据库表里面没有相关的,则会发出
ObjectNotFoundException
异常。
PSPS:可以通过设置断点,用debug来跟踪相关变量跟对象的改变,这样就可以很清晰理解load和get这两个方法。
-------------------------------------------------------------------------------------------------
PS:本博客文章,如果没有注明是有“转”字样,属于本人原创。如果需要转载,务必
注明作者
和
文章的详细出处地址
,否则不允许转载,多谢合作!
posted on 2008-10-09 20:38
apple0668
阅读(444)
评论(0)
编辑
收藏
所属分类:
hibernate
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
系统学习hibernate之十五:hibernate一级缓存
系统学习hibernate之十四:hibernate中HQL查询语言(二)
系统学习hibernate之十三:hibernate中HQL查询语言(一)
系统学习hibernate之十二:hibernate中悲观锁和乐观锁
系统学习hibernate之十一:set、list、map、array集合
系统学习hibernate之十:Component映射
系统学习hibernate之九:多对多关联映射(双向)
系统学习hibernate之八:多对多关联映射(单向)
系统学习hibernate之七:一对多单向关联
系统学习hibernate之六:一对一外键关联映射双向关联
Email:
chensp1230@163.com
欢迎交流
框架是告诉人们不该去做什么,而不是告诉人们该去做什么;容器是告诉人们该去做什么,而不是告诉人们不该去做什么!
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
留言簿
(10)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
Netbeans 爱好者(0/0)
随笔分类
(63)
Aglets(1)
drools(2)
eclipse(6)
groovy
hibernate(17)
java(7)
jboss
junit(3)
Log4(2)
MongoDB(1)
oracle(1)
spring(4)
struts2(8)
svn(1)
tomcat(4)
webwork(4)
web报表(1)
xml
心情港湾
集群(1)
随笔档案
(61)
2015年3月 (1)
2012年7月 (1)
2012年4月 (1)
2011年5月 (3)
2010年1月 (2)
2009年3月 (1)
2008年12月 (2)
2008年11月 (5)
2008年10月 (16)
2008年9月 (1)
2008年4月 (1)
2008年1月 (2)
2007年11月 (2)
2007年10月 (15)
2007年9月 (8)
友情链接
开源在线手册
最新随笔
1. Ehcache集群方案
2. MongoDB安装手记
3. 任何人都可以重构<转载>
4. JDK6中JWS自带webservice应用
5. 解决:Eclipse启动tomcat 访问不了 手动启动可以访问
6. IntelliJ Idea10 常用快捷键
7. Drools语法详解<转>
8. eclipse3.4安装drools插件手记
9. Java日期时间运算
10. java中使用功能强悍的正则表达式
搜索
最新评论
1. re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
非常感谢楼主分享,解决问题, Tomcat 7.0.59
--Gozs
2. re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记[未登录]
正解
--gao
3. re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
@123
已解决,谢谢提示myeclipse相关的有用信息~~
--sequoah
4. re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
赞 清空work文件夹就可以了
--维尼
5. re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
很好 问题解决了!
--兔兔
阅读排行榜
1. Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记(85516)
2. 系统学习hibernate之一:利用hibernate中的SchemaExport生成数据表(18635)
3. eclipse的第一个struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(15676)
4. Subversion之路---实现精细的目录访问权限控制<转>(11275)
5. IntelliJ Idea10 常用快捷键(9308)
评论排行榜
1. Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记(62)
2. eclipse的第一个struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(32)
3. Tomcat启动端口被占用异常处理(9)
4. 升级瑞星防火墙2008后,在myeclipse6.0中启动tomcat遇到怪问题!(7)
5. JDK6中JWS自带webservice应用(6)