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();
}
}