
臨時狀態
在hibernate沒有對物件進行讀寫等操作上的交集,此時實體類物件處于臨時狀態,
例如:
User u = new User();
持久狀態
//獲取會話物件 Session session = SessionFactoryUtils.openSession(); //開啟事務 Transaction trants = session.beginTransaction(); //懶加載,此時回傳的user物件為代理物件,只有oid標識列屬性有值,其余部分空值 User u = session.load(User.class, user.getId()); //在事務間訪問此代理物件除了oid欄位的其他屬性,將會觸發物件初始化操作,為物件賦上完整的欄位值 // System.out.println(u); //啟用hibernate的初始化操作 Hibernate.initialize(u); //提交事務 trants.commit(); //關倍訓話 SessionFactoryUtils.closeSession(); // LazyInitializationException:懶(延遲)加載例外
托管狀態
當hibernate執行了事務提交(commit),會話關閉(close),會話重置(clear),清除指定快取物件(evict)時,物件由持久態轉換為托管態(游離態)
不過仍然可以通過update或save等動作重新切換到持久態,而洗掉則直接轉變為瞬時態,
User user = session.get(User.class, 6); // if(null!=user) // session.update(u); // session.merge(u);//可以同時標記相同的持久態物件 // 提交事務/回滾事務 transaction.commit(); // 關閉Session session.close();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75742.html
標籤:其他
