BlueDavy之技术Blog
理论不懂就实践,实践不会就学理论!
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
246 随笔 :: 2 文章 :: 1324 评论 :: 1 Trackbacks
<
2006年2月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
10
11
公告
随笔分类
@RIAWork(10)
(rss)
Internet(5)
(rss)
Java(65)
(rss)
Javascript(7)
(rss)
OSGi、SOA、SCA(66)
(rss)
Plugin Architecture(10)
(rss)
Workflow(4)
(rss)
业界随想(26)
(rss)
数据集成(8)
(rss)
系统设计(38)
(rss)
软件工程(22)
(rss)
随笔档案
2008年8月 (1)
2008年7月 (4)
2008年6月 (4)
2008年5月 (3)
2008年4月 (1)
2008年3月 (3)
2008年2月 (1)
2008年1月 (10)
2007年12月 (2)
2007年11月 (2)
2007年10月 (6)
2007年9月 (2)
2007年8月 (4)
2007年7月 (5)
2007年6月 (2)
2007年5月 (4)
2007年4月 (2)
2007年3月 (2)
2007年2月 (2)
2007年1月 (1)
2006年12月 (6)
2006年11月 (5)
2006年10月 (8)
2006年9月 (13)
2006年8月 (15)
2006年7月 (3)
2006年6月 (7)
2006年5月 (9)
2006年4月 (12)
2006年3月 (13)
2006年2月 (9)
2006年1月 (14)
2005年12月 (11)
2005年11月 (14)
2005年10月 (9)
2005年9月 (10)
2005年8月 (5)
2005年7月 (9)
2005年6月 (9)
2005年5月 (2)
2005年2月 (1)
文章档案
2005年5月 (2)
Blogger's
Bjug
DBANotes
大名鼎鼎了,勿需多说
ESBZone[推荐]
(rss)
SOA实战者,强烈推荐
Michael Chen
Peter Cheng
raimundo桃之夭夭
冰云
梦想风暴
西湖边的穷秀才
搜索
最新评论
1. re: Visitor Pattern的理解
切莫误人子弟 !
--可可
2. re: Hibernate实践
好东西,多谢!
--亦风亦尘
3. re: 畅想OSGi DevCon2008[未登录]
OSGi有C++实现吗?
--lei
4. re: OSGi in action online演讲的资料
支持下
--xjmcs
5. re: 关于OSGi Opendoc附带的EventAdmin代码错误的纠正
怎么装EventAdmin的bundle?我每次get下来都是null
--xfzhu
阅读排行榜
1. Hibernate实践(20098)
2. 系统设计说明书(架构、概要、详细)目录结构(14331)
3. 工作流管理系统概述(7792)
4. 发布《OSGi实战》正式版(6789)
5. Eclipse(3.1) Plugin Framework(基于OSGI的Plugin Architecture)(6399)
评论排行榜
1. 漫谈CMS(84)
2. 《OSGi进阶》预览版发布(50)
3. 发布《OSGi实战》正式版(46)
4. 何谓精通(45)
5. Hibernate实践(30)
60天内阅读排行
1. 【译】构建可扩展的Java EE应用(一)(2499)
2. JSP的Request session的有效时间应合理设置(2409)
3. 【译】构建可扩展的Java EE应用(二)(2112)
4. 外行人谈压力测试(1797)
5. 《编程之美》书评(996)
碰到的一个Hibernate的问题
也不知道算不算问题,只是感觉有那么一点奇怪...
在OSIV情况下编写的一个测试类,其中的代码是这样的:
1
Test test
=
new
Test();
2
dao.save(test);
3
Test testChild
=
new
Test();
4
testChild.setParent(test);
5
dao.save(testChild);
6
Test resultTest
=
(Test)dao.getById(Test.
class
, test.getId());
Test本身是个自关联,映射文件如下:
<
class
name
="dataset.component.metadata.display.Test"
table
="T_Test"
dynamic-update
="true"
>
<
id
name
="id"
column
="id"
type
="int"
>
<
generator
class
="native"
>
</
generator
>
</
id
>
<
set
name
="childs"
table
="T_Test"
lazy
="true"
cascade
="delete"
sort
="unsorted"
>
<
key
column
="parentId"
>
</
key
>
<
one-to-many
class
="dataset.component.metadata.display.Test"
/>
</
set
>
<
many-to-one
name
="parent"
class
="dataset.component.metadata.display.Test"
cascade
="none"
outer-join
="auto"
update
="true"
insert
="true"
column
="parentId"
/>
</
class
>
因为是open session in view,所以session是在代码执行完毕后关闭的;
在这种情况下执行resultTest.getChilds()返回的是null。
调试的时候dao.getById执行完毕后取回的resultTest和之前的test是同一个对象,hashcode都是一样的..
于是便尝试在dao.getById之前把session关闭,这个时候再执行发现resultTest.getChilds()就是正确的了..
总结,就是在同一个session内如果save了一个对象,再通过session.load的方式去取这个对象取出的将仍然是当前session中的对象,也就是说不会去数据库中重新获取...
怎么感觉这样是不太对的,明明数据库有改变,却没有去重新的加载...
但因为open session in view是这么做的,所以现在干脆测试的时候就使用另外一个dao了,唯一的不同就是这个dao会即时的关闭session,大家有没有别的什么好建议,^_^
posted on 2006-02-24 20:05
BlueDavy
阅读(1187)
评论(6)
编辑
收藏
所属分类:
Java
评论
#
re: 碰到的一个Hibernate的问题
2006-02-24 20:56
Vincent Thinking
^_^,因为Session本身一级缓存,由于OSIV取的同一个session,所以是同一个对象。save(test)后,test已经从pojo转变为po,任何po的改动都会同步到数据库,但是代码中仅仅是testChild.setParent(test),而没有test.addChild(testChild),所以仅仅是testChild发生了变化,test没有任何改动,session中仍然保存的是以前的test。重新开一个session会读取会得到带有child的test,或者用get()方法。
回复
更多评论
#
re: 碰到的一个Hibernate的问题
2006-02-26 10:07
Asktalk
看一下它,对你有帮助,
http://www.blogjava.net/asktalk/archive/2006/01/18/28548.html
回复
更多评论
#
re: 碰到的一个Hibernate的问题
2006-02-26 16:45
BlueDavy
恩,多谢asktalk,^_^
回复
更多评论
#
re: 碰到的一个Hibernate的问题
2006-02-28 08:20
aycl
在 dao.getById(..) 前叫: session.clear() 或 session.evict(test). 可清理一級緩存, 迫 hibernate 重新讀取.
回复
更多评论
#
re: 碰到的一个Hibernate的问题
2006-02-28 09:27
BlueDavy
恩,已经这么做了,多谢,^_^
回复
更多评论
#
re: 碰到的一个Hibernate的问题
2006-03-10 13:47
Tin
可以用session.refresh()进行强行读取就OK了。
我么项目的Category也是自影射,修改完以后child就没有了。只要refresh一下就OK了。
回复
更多评论
新闻频道
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
相关文章:
JBoss Remoting 2.2.2里的一个Bug
Java并发编程基础知识片段
《面向软件错误构建可靠的分布式系统》读后感
SQLUnit quick start guide
java调用Oracle EXP备忘
备忘:解决ajax获取页面直接显示乱码的方法
缓存漫谈
Foundations Of Ajax读后感
项目杂感
Maven、Hibernate升级小贴士
Powered by:
BlogJava
Copyright © BlueDavy