0
在我的項目下面的代碼被用於管理Hibernate事務:Hibernate事務:這段代碼的重點是什麼?
public void someMethod() {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
try {
session.save(something);
} catch (Exception e) {
tx.rollback();
logger.error("error", e);
throw new EJBException(e);
} finally {
try {
tx.commit();
} catch (Exception e) {
tx.rollback();
logger.error("error", e);
} finally {
session.close();
}
}
}
他們告訴我這是爲了確保連接已在方法的末尾正確關閉的完成。不過,我不明白在finally
塊中執行提交/回滾的重要性。
是否有真正的理由證明這種方法的正確性,還是更好地做一些簡單的事情,就像這樣?
public void simplerMethod() {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
try {
session.save(something);
tx.commit();
} catch (Exception e) {
tx.rollback();
logger.error("error", e);
throw new EJBException(e);
} finally {
session.close();
}
}