在Base類中加入以下代碼實(shí)現(xiàn)get方法





















































對(duì)get方法參數(shù)User.class的理解:
由于Session可以管理多個(gè)數(shù)據(jù)庫(kù)表所對(duì)應(yīng)的多個(gè)實(shí)體對(duì)象。如果要查詢id為1的實(shí)體對(duì)象,Session.get方法需要知道去哪個(gè)數(shù)據(jù)庫(kù)表中查詢id為1的記錄,所以。除了給get方法傳遞所要查詢的實(shí)體對(duì)象的id值外,還必須給get方法傳遞實(shí)體對(duì)象的類型,get方法才能知道去哪個(gè)數(shù)據(jù)庫(kù)表中進(jìn)行查詢。
控制臺(tái)顯示結(jié)果: name:name
在配置文件hibernate.cfg.xml文件中加入
<property name="show_sql">true</property>
可顯示所執(zhí)行的sql語(yǔ)句
load方法
懶加載 并不馬上訪問(wèn)數(shù)據(jù)庫(kù) 只有第一次應(yīng)用時(shí)才訪問(wèn)數(shù)據(jù)庫(kù) load方法的返回對(duì)象永遠(yuǎn)不可能為空
























































在這里增加的打印user1類名的代碼,看到load方法所返回User子類的名稱。
save與persist方法的區(qū)別:在沒(méi)有開(kāi)啟事務(wù)的時(shí)候
save方法會(huì)把數(shù)據(jù)插入到數(shù)據(jù),之后又回滾,刪掉數(shù)據(jù)。而persist方法根本就不執(zhí)行插入。
總結(jié)Session的幾個(gè)主要方法:
1 save,persist保存數(shù)據(jù),persist在事務(wù)外不會(huì)產(chǎn)生insert語(yǔ)句;
2.delete,刪除對(duì)象;
3.update,更新對(duì)象,如果數(shù)據(jù)庫(kù)中沒(méi)有記錄,會(huì)出現(xiàn)異常;
4.get,根據(jù)id查,會(huì)立刻訪問(wèn)數(shù)據(jù)庫(kù)。
5.load,根據(jù)id查(返回的是代理,不會(huì)立即訪問(wèn)數(shù)據(jù)庫(kù))
6.saveOrUpdate,merge(根據(jù)id和version的值來(lái)確定是save或update),調(diào)用merge你的對(duì)象還是托管的。
7.lock()把對(duì)象變成持久對(duì)象,但不會(huì)同步對(duì)象的狀態(tài)
下午學(xué)習(xí)實(shí)體對(duì)象的三種狀態(tài)與saveOrUpdate方法。