一切我讀到休眠狀態,你必須給出一個例子回滾事務,並在發生錯誤時關閉會話,並且通常會有下面的代碼(由Hibernate的文檔拍攝)的一些變化:如果您不在Hibernate中回滾事務,會發生什麼情況?
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();
// do some work
...
tx.commit();
} catch (RuntimeException e) {
if (tx != null) tx.rollback();
throw e; // or display error message
} finally {
sess.close();
}
由於幾個原因,這種模式對我來說似乎很奇怪。首先,對於一個通常旨在簡化事情的框架來說,看起來似乎過於複雜。更重要的是,如果try
塊中的代碼拋出RuntimeException
以外的內容,會發生什麼情況?看起來好像Hibernate必須能夠在這種情況下正常關閉會話,大概是通過回滾,但如果這是真的,爲什麼還要打電話rollback
?
誰告訴你Hibernate使事情變得簡單? :) – skaffman 2010-08-27 20:54:45