【发布时间】:2017-03-17 10:11:38
【问题描述】:
在我的项目中,以下代码用于管理休眠事务:
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();
}
}
【问题讨论】:
标签: java hibernate transactions try-catch-finally