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 に答える