get和load區別

參考:http://blog.csdn.net/henry115/article/details/8254482

    get和load的key參數不能爲空或"",否則出錯。

 

Users user = (Users)session.load(Users.class, userId);   

 這句代碼不會去執行數據庫查詢,只有用到user時纔會去執行數據庫查詢。

 

Users user = (Users)session.get(Users.class, userId);    

 則立即去執行數據庫查詢。 所以Users user = (Users)session.load(Users.class, userId);不會執行任何sql。

Users user = (Users)session.load(Users.class, userId);     
System.out.println(user.getId());   

 上面這2句代碼,不會去執行數據庫操作。因爲load後會在hibernate的一級緩存裏存放一個map對象,該map的key就是userId的值,但是當你getId()時,它會去一級緩存裏拿map的key值,而不去執行數據庫查詢。所以不會報任何錯。不會執行任何數據庫操作。

並且注意:這兩個方法的第二個參數id,它必須是實現了java.io.Serializable接口,也就是可序列化的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章