這裏是代碼的Java持久性與Hibernate書由基督教和Gavin塊,在Hibernate中手動設置flushmode時,transaction.commit()會做什麼?
Session session = getSessionFactory().openSession();
session.setFlushMode(FlushMode.MANUAL);
// First step in the conversation
session.beginTransaction();
Item item = (Item) session.get(Item.class, new Long(123));
session.getTransaction().commit();
// Second step in the conversation
session.beginTransaction();
Item newItem = new Item();
Long newId = (Long) session.save(newItem); // Triggers INSERT!
session.getTransaction().commit();
// Roll back the conversation!
session.close();//enter code here
我感到困惑的是,爲什麼在第一步和第二步需要被包裝成兩個獨立的交易?由於flushmode在此處設置爲手動,因此無論如何,沒有任何操作(假設我們忽略插入)將會觸發數據庫。那麼爲什麼要在這裏交易呢?
謝謝
謝謝,但我仍然有問題(正如我在Yuval的回答中的評論中提到的那樣),我是否需要在對話中的每個步驟中進行一次交易? – wei 2010-04-16 20:49:29
@薇看到更新 – Bozho 2010-04-17 07:51:15