hibernate教程--持久化类状态详解
一、 Hibernate的持久化類狀態:
1.1?Hibernate的持久化類狀態
持久化類:就是一個實體類 與 數據庫表建立了映射.
?Hibernate為了方便管理持久化類,將持久化類分成了三種狀態.
瞬時態 transient:(臨時態)
?
持久態 persistent:
?
脫管態 detached:(離線態)
1.2?三種持久化對象的狀態:
Transient瞬時態:
特點:持久化對象沒有唯一標識OID.沒有納入Session的管理.
Persistent持久態:
特點:持久化對象有唯一標識OID.已經納入到Session的管理.
結論:持久化持久態對象有自動更新數據庫的能力.
Detached脫管態:
特點:持久化對象有唯一標識OID,沒有納入到Session管理.
1.3?區分三種持久化對象的狀態:
@Test// 區分持久化對象的三種狀態:public void demo1(){// 1.創建SessionSession session = HibernateUtils.openSession();// 2.開啟事務Transaction tx = session.beginTransaction();// 向數據庫中保存一本圖書:Book book = new Book();// 瞬時態:沒有唯一標識OID,沒有與session關聯.book.setName("Hiernate開發");book.setAuthor("XX");book.setPrice(65d);session.save(book); // 持久態:有唯一標識OID,與session關聯.// 3.事務提交tx.commit();// 4.釋放資源session.close();book.setName("Struts2開發"); // 脫管態:有唯一的標識,沒有與session關聯.}1.4?三種狀態對象轉換:
1.4.1、瞬時態:
獲得:
Book book = new Book();
瞬時--->持久
* save(book);
* save()/saveOrUpdate();
瞬時--->脫管
* book.setId(1);
1.4.2、持久態:
獲得:
Book book = (Book)session.get(Book.class,1);
* get()/load()/find()/iterate();
持久--->瞬時:
* delete(book);
* 特殊狀態:刪除態.(被刪除的對象,不建議去使用.)
持久--->脫管:
* session.close();
* close()/clear()/evict();
1.4.3、脫管態:
獲得:
Book book = new Book();
book.setId(1);
脫管--->持久:
* session.update();
* update()/saveOrUpdate()/lock()
脫管--->瞬時:
* book.setId(null);
1.5?持久態對象有自動更新數據庫的能力;
@Test// 測試持久態的對象自動更新數據庫public void demo2(){// 1.創建SessionSession session = HibernateUtils.openSession();// 2.開啟事務Transaction tx = session.beginTransaction();// 獲得一個持久態的對象.Book book = (Book) session.get(Book.class, 1);book.setName("Struts2開發");// session.update(book);// 3.提交事務tx.commit();// 4.關閉資源session.close();}總結
以上是生活随笔為你收集整理的hibernate教程--持久化类状态详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate教程--持久化类状态
- 下一篇: hibernate教程--一级缓存