[英]Transaction in HIbernate
在以下代碼中:
SessionFactory sessionFactory = new Configuration().configure("student.cfg.xml").buildSessionFactory();
Session session = sessionFactory.openSession();
//Transaction tran = session.beginTransaction();
session.save(student);
//tran.commit();
session.flush();
session.close();
無論我是否評論/取消注釋交易,它們都可以正常工作,即無需交易,也可以成功執行保存操作。 但是,當我檢查文檔時,他們總是在插入更新刪除之前使用事務。 有什么具體原因嗎? 我錯過了什么嗎?
請讓我知道這件事。 我很困惑:(
問候,
當您始終使用自動提交時,它可能會損害您的數據庫。 假設你想一次完成一堆工作。 在這種情況下,您需要在完成所有工作后創建事務並提交所有工作。 例如,您需要為原子工作執行大量數據庫訪問。 在這種情況下,您需要完成事務中的所有工作並提交所有工作。
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
// do some work
tx.commit();
當然還有你的捕獲塊。
閱讀此文章是從JBOSS
有一點我相信如果你不使用事務(在某些時候你可能需要它,如果不需要原子操作)那么任何與數據庫相關的操作都會命中數據庫。 它使系統瘋狂。 如果你做事務,那么hibernate會在同一個事務中執行所有操作一次命中db。 在某些時候,我之前讀過的地方。
我認為hibernate中的非選擇查詢正在執行多個查詢(或使用多個操作),這就是為什么我們需要事務來執行它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.