0

下面的代码可以正常工作还是我需要在工作之前开始交易。

Session session = SessionFactory.openSession();

//do some work like session.save/Update

finally{
    session.beginTransaction().commit();
}
4

2 回答 2

4

不。当然,作为事务一部分的代码必须在事务的开始和提交之间。

这是(文档中所说的:

会话/事务处理习惯用法如下所示:

// 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();
}
于 2013-05-31T07:19:23.987 回答
0

不,您需要管理事务,提交以立即生效,Hibernate 抛出的任何异常都是致命的,您必须回滚事务并关闭当前会话。

于 2013-05-31T07:22:58.943 回答