自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate的游離狀態(tài)

開發(fā) 后端
本文介紹Hibernate的三個狀態(tài),此為第一部分。Java應用程序與Hibernate之間的主要運行時接口。它是抽象了持久化服務概念的核心抽象API類。

Java應用程序與Hibernate之間的主要運行時接口。它是抽象了持久化服務概念的核心抽象API類。
Session的生命周期綁定在一個物理的事務(tansaction)上面。(長的事務可能跨越多個數(shù)據(jù)庫事物。)

Session的主要功能是提供對映射的實體類實例的創(chuàng)建,讀取和刪除操作。
實例可能以下面三種狀態(tài)存在:
◆自由狀態(tài)(transient): 不曾進行持久化,未與任何Session相關聯(lián)
◆持久化狀態(tài)(persistent): 僅與一個Session相關聯(lián)
◆游離狀態(tài)(detached): 已經(jīng)進行過持久化,但當前未與任何Session相關聯(lián)

游離狀態(tài)的實例可以通過調(diào)用update(),lock(),replicate(),save(),persist()或者saveOrUpdate()方法進行持久化。持久化實例可以通過調(diào)用 delete()變成游離狀態(tài)。通過get()或load()方法得到的實例都是持久化狀態(tài)的。游離或者自由狀態(tài)下的實例可以通過調(diào)用merge()方法成為一個新的持久化實例。
save()和persist()將會引發(fā)SQL的INSERT,delete()會引發(fā)SQLDELETE,而update()或merge()會引發(fā)SQLUPDATE。對持久化(persistent)實例的修改在刷新提交的時候會被檢測到,它也會引起SQLUPDATE。saveOrUpdate()或者replicate()會引發(fā)SQLINSERT或者UPDATE。

其具體實現(xiàn)并不一定是線程安全的。每個線程/事務應該從一個SessionFactory獲取自己的session實例。

如果其持久化對象類是可序列化的,則Session實例也是可序列化的。

一個典型的事務應該使用下面的形式:Session sess = factory.openSession();

  1. Transaction tx;  
  2. try {  
  3. tx = sess.beginTransaction();  
  4. //do some work  
  5. ...  
  6. tx.commit();  
  7. }  
  8. catch (Exception e) {  
  9. if (tx!=null) tx.rollback();  
  10. throw e;  
  11. }  
  12. finally {  
  13. sess.close();  

如果Session拋出了異常, 事務必須回滾而session會被廢棄。在異常發(fā)生后Session的內(nèi)部狀態(tài)可能會與數(shù)據(jù)庫失去同步

【編輯推薦】

  1. Hibernate基礎(2)
  2. 擴展hibernate的查詢
  3. 簡單的Hibernate入門介紹
  4. 在Liferay中使用Hibernate
  5. Hibernate模糊查詢參數(shù)化的問題
責任編輯:book05 來源: 百度博客
相關推薦

2009-06-03 09:11:03

Hibernate工作原理體系結(jié)構(gòu)

2009-06-17 15:06:50

Hibernate實體

2009-09-28 11:30:53

Hibernate核心

2009-07-02 09:28:07

Hibernate三種

2009-09-25 15:58:04

Hibernate對象

2009-06-26 10:10:00

Hibernate狀態(tài)

2009-09-24 16:22:50

Hibernate自動

2009-06-26 10:07:00

Hibernate狀態(tài)

2009-07-02 09:38:17

Hibernate延時

2009-09-23 17:00:07

Hibernate持久

2009-06-18 11:43:40

Hibernate uHibernate s

2012-02-03 11:31:33

HibernateJava

2009-06-06 15:37:22

Hibernate性能

2009-06-26 10:01:00

Hibernate的查

2012-02-03 11:17:33

HibernateJava

2009-07-02 09:40:14

Hibernate的繼

2009-09-25 09:04:27

Hibernate類型

2009-06-26 16:33:09

saveOrUpdatHibernate

2012-02-08 14:24:35

HibernateJava

2009-09-23 16:30:01

Hibernate f
點贊
收藏

51CTO技術(shù)棧公眾號