2017-01-30 41 views
-1

我是Hibernate的新手,我還是不明白它是如何工作的對象import org.hibernate.Transaction;。 現在我寫CRUD操作的Person實體,我寫了這個實施,立足於我在網絡上找到:休眠 - 把操作放在事務

public void save(Person p) { 
    Session session = this.sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    session.persist(p); 
    tx.commit(); 
    session.close(); 
} 

我的問題是,我爲什麼要使用Transaction對象?如果我不使用它會發生什麼?最後,是否需要在每個CRUD操作中使用?我注意到,在讀取操作中(所以當我們不寫入數據庫,並且我們只請求了Person對象的列表時)開發人員不會將代碼置於事務之下。

回答

0

爲什麼我應該使用Transaction對象?

在數據庫管理系統中,一個事務代表一個工作單元,並且它們中的每一個都需要獨立於其他工作單元,以便在發生任何類型的故障時系統可以恢復並且已經存在的數據是不會丟失。 事務對象可以幫助您實現這一點。只有在提交事務時纔會保留數據,如果發生任何失敗,則提交所有更改將被回滾。

我應該在每次粗暴操作中使用它嗎?

正常情況下,對於讀取操作,您不需要事務對象,但它仍然存在爭議,請參閱this以獲取有關只讀操作中的事務的更多信息。但是對於創建,更新和刪除操作,您應該始終使用事務。