碰到的一個(gè)Hibernate的問題
在OSIV情況下編寫的一個(gè)測(cè)試類,其中的代碼是這樣的:

2

3

4

5

6














































因?yàn)槭莖pen session in view,所以session是在代碼執(zhí)行完畢后關(guān)閉的;
在這種情況下執(zhí)行resultTest.getChilds()返回的是null。
調(diào)試的時(shí)候dao.getById執(zhí)行完畢后取回的resultTest和之前的test是同一個(gè)對(duì)象,hashcode都是一樣的..
于是便嘗試在dao.getById之前把session關(guān)閉,這個(gè)時(shí)候再執(zhí)行發(fā)現(xiàn)resultTest.getChilds()就是正確的了..
總結(jié),就是在同一個(gè)session內(nèi)如果save了一個(gè)對(duì)象,再通過session.load的方式去取這個(gè)對(duì)象取出的將仍然是當(dāng)前session中的對(duì)象,也就是說不會(huì)去數(shù)據(jù)庫中重新獲取...
怎么感覺這樣是不太對(duì)的,明明數(shù)據(jù)庫有改變,卻沒有去重新的加載...
但因?yàn)閛pen session in view是這么做的,所以現(xiàn)在干脆測(cè)試的時(shí)候就使用另外一個(gè)dao了,唯一的不同就是這個(gè)dao會(huì)即時(shí)的關(guān)閉session,大家有沒有別的什么好建議,^_^
posted on 2006-02-24 20:05 BlueDavy 閱讀(1716) 評(píng)論(6) 編輯 收藏 所屬分類: Java