1. 程式人生 > >hibernate 物件的三種狀態

hibernate 物件的三種狀態

一、 物件的三種狀態(hibernate管理的物件)

           1. 臨時狀態

               物件的臨時狀態,形容也就是這個物件(進行了例項化操作的物件)未被 session 會話進行 save 操作或者是這個物件被 session 會話進行了 delete 操作,處於一個可用但不用的狀態,有一種備用的感覺

  1.         //此時再通過delete操作,將物件student變為         臨時態
  2.         session.delete(student);
  3.         //物件例項化,此時的s物件為          臨時態
  4.        Student s = new Student();// 未進行 save 操作
          

            2. 持久狀態

                物件的持久狀態,證實了這個物件的來源是由hibernate 通過 session 的 get 操作 亦或是 進行了 save 操作而獲得的持久態物件,是被 hibernate 所管理的物件

  1.         s.setSid(99999);
  2.         s.setSname("xxxxx");
  3.         //通過session會話的save方法,將s物件狀態變為           持久態
  4.         session.save(s);
  5.  
  6.         //通過get方法獲得物件,s物件狀態變為       持久態
  7.          Student student = session.get(Student.class, 1);
  8.  
  9.          //再次獲取session會話,通過update操作,將遊離態物件student變為         持久態
  10.         session = SessionFactoryUtil.getSession();
  11.         session.update(student);

            3. 遊離狀態

                遊離狀態,一個持久態物件因為 hibernate 不需對它進行管理時,關閉 session 會話, 不對其進行操作, 此時的物件狀態就變為了遊離狀態

  1.         //關閉會話,物件狀態變為       遊離態
  2.         session.close();

 注:hibernate是通過管理物件來操作資料,這裡物件指的是持久化物件;hibernate中的三種狀態的物件是可以相互轉換的,通常編碼時只關注持久態物件。關注get、save、update方法所操作後的物件 

   奉上一圖

hibernate物件的三種狀態