hibernate 物件的三種狀態
阿新 • • 發佈:2018-11-29
一、 物件的三種狀態(hibernate管理的物件)
1. 臨時狀態
物件的臨時狀態,形容也就是這個物件(進行了例項化操作的物件)未被 session 會話進行 save 操作或者是這個物件被 session 會話進行了 delete 操作,處於一個可用但不用的狀態,有一種備用的感覺
- //此時再通過delete操作,將物件student變為 臨時態
- session.delete(student);
- //物件例項化,此時的s物件為 臨時態
- Student s = new Student();// 未進行 save 操作
2. 持久狀態
物件的持久狀態,證實了這個物件的來源是由hibernate 通過 session 的 get 操作 亦或是 進行了 save 操作而獲得的持久態物件,是被 hibernate 所管理的物件
- s.setSid(99999);
- s.setSname("xxxxx");
- //通過session會話的save方法,將s物件狀態變為 持久態
- session.save(s);
- //通過get方法獲得物件,s物件狀態變為 持久態
- Student student = session.get(Student.class, 1);
- //再次獲取session會話,通過update操作,將遊離態物件student變為 持久態
- session = SessionFactoryUtil.getSession();
- session.update(student);
3. 遊離狀態
遊離狀態,一個持久態物件因為 hibernate 不需對它進行管理時,關閉 session 會話, 不對其進行操作, 此時的物件狀態就變為了遊離狀態
- //關閉會話,物件狀態變為 遊離態
- session.close();
注:hibernate是通過管理物件來操作資料,這裡物件指的是持久化物件;hibernate中的三種狀態的物件是可以相互轉換的,通常編碼時只關注持久態物件。關注get、save、update方法所操作後的物件
奉上一圖