參考: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接口,也就是可序列化的。