可以在提交/回滚时调用hibernate中的事务开始

时间:2013-05-31 07:14:50

标签: java hibernate

下面的代码是否正常工作,或者我需要在开始工作之前开始交易。

Session session = SessionFactory.openSession();

//do some work like session.save/Update

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

2 个答案:

答案 0 :(得分:4)

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

这里({3}}说的是:

  

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

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

答案 1 :(得分:0)

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