在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方法。