下面的代码可以正常工作还是我需要在工作之前开始交易。
Session session = SessionFactory.openSession();
//do some work like session.save/Update
finally{
session.beginTransaction().commit();
}
不。当然,作为事务一部分的代码必须在事务的开始和提交之间。
这是(文档中所说的:
会话/事务处理习惯用法如下所示:
// Non-managed environment idiom
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();
}
不,您需要管理事务,提交以立即生效,Hibernate 抛出的任何异常都是致命的,您必须回滚事务并关闭当前会话。