標籤:引用 setname 有一個 hiberna print ati play nsa 提交
第一節:Hibernate 中四種對象狀態 刪除狀態:處於刪除狀態的Java 對象被稱為刪除對象。比如說session delete一個對象,這個對象就不處於session緩衝中了, 已經從session的緩衝中移出來了,只要提交事務的話,對應的資料庫記錄也會被刪除。 游離狀態:比如說session被關閉了,這裡面的對象就變為游離狀態了,游離狀態和刪除狀態中物件,如果不用的話,會被垃圾收集器回收。 幾種狀態之間的轉化:例子:
public class StudentTest { public static void main(String[] args) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); Class c1 = new Class(); //臨時對象1 c1.setName("08計本"); Class c2 = new Class(); //臨時對象2 c2.setName("09計本"); session.save(c1); //持久化對象 session.save(c2); //持久化對象 session.delete(c2); //刪除對象 session.getTransaction().commit(); //提交事務 session.close(); //關閉session System.out.println(c1.getName()); //游離對象 System.out.println(c2.getName()); //刪除對象 }}View Code
解釋:
c1、c2剛被new出來的時候是臨時狀態: session.save(c1) session.save(c2),c1/c2就變成了持久化對象: session被關閉之後,c1就是游離狀態了,c1已經不在session緩衝中了,當然呢,有一個對象引用依然指向著它,這個對象依然存在,只不過是變成游離對象了;System.out.println(c1.getName())這個資料依然能取得到; session.delete(c2)後,c2從session緩衝中被移出,c2變為刪除狀態了,它指的刪除是,session提交事務時會刪除這個對象對應的資料庫裡面的一條記錄;System.out.println(c2.getName())還是能列印,只不過是刪除狀態; console列印:
Hibernate學習5—Hibernate操作對象