私は現在、Hibernate を永続化マネージャーとして使用し、JPA を永続化管理の休止状態の抽象化として Java でアプリケーションを開発しています。
結果クエリをトランザクションにラップすることの影響を知りたいです。エンティティマネージャーは、遅延フェッチされたフィールドのバグに対して開いたままにしておく必要があることを知っています。これでトランザクションはどうなりますか?
以下は、トランザクションのアクティブ化/非アクティブ化機能を使用したコード例です。
public List<Exportdata> get(Integer max, EntityManager em, Boolean withTransaction) {
EntityTransaction tx = null;
try {
if (withTransaction) {
tx = em.getTransaction();
tx.begin();
}
Query query = em.createQuery("from Exportdata");
query.setMaxResults(10);
List<Exportdata> list = query.getResultList();
if (withTransaction)
tx.commit();
return list;
} catch (RuntimeException re) {
if (withTransaction)
if (tx != null && tx.isActive())
tx.rollback();
throw re;
}
}
この関数が呼び出されたときの withTransaction の有効化と無効化の違いは何ですか?
ありがとう、フレッド