在Base類中加入以下代碼實現(xiàn)get方法
對get方法參數(shù)User.class的理解: 由于Session可以管理多個數(shù)據(jù)庫表所對應的多個實體對象。如果要查詢id為1的實體對象,Session.get方法需要知道去哪個數(shù)據(jù)庫表中查詢id為1的記錄,所以。除了給get方法傳遞所要查詢的實體對象的id值外,還必須給get方法傳遞實體對象的類型,get方法才能知道去哪個數(shù)據(jù)庫表中進行查詢。 控制臺顯示結(jié)果: name:name 在配置文件hibernate.cfg.xml文件中加入 <property name="show_sql">true</property> 可顯示所執(zhí)行的sql語句 load方法 懶加載 并不馬上訪問數(shù)據(jù)庫 只有第一次應用時才訪問數(shù)據(jù)庫 load方法的返回對象永遠不可能為空
在這里增加的打印user1類名的代碼,看到load方法所返回User子類的名稱。 save與persist方法的區(qū)別:在沒有開啟事務的時候 save方法會把數(shù)據(jù)插入到數(shù)據(jù),之后又回滾,刪掉數(shù)據(jù)。而persist方法根本就不執(zhí)行插入。 總結(jié)Session的幾個主要方法: 1 save,persist保存數(shù)據(jù),persist在事務外不會產(chǎn)生insert語句; 2.delete,刪除對象; 3.update,更新對象,如果數(shù)據(jù)庫中沒有記錄,會出現(xiàn)異常; 4.get,根據(jù)id查,會立刻訪問數(shù)據(jù)庫。 5.load,根據(jù)id查(返回的是代理,不會立即訪問數(shù)據(jù)庫) 6.saveOrUpdate,merge(根據(jù)id和version的值來確定是save或update),調(diào)用merge你的對象還是托管的。 7.lock()把對象變成持久對象,但不會同步對象的狀態(tài) 下午學習實體對象的三種狀態(tài)與saveOrUpdate方法。