在Base類中加入以下代碼實現get方法





















































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
























































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