私のプロジェクトでは、Hibernate と Spring を使用しており、どちらもここでトランザクションを管理できます。私の質問は、アプリケーションでトランザクションを管理するのに適しているということです。
2 に答える
Spring 自体は、トランザクションを開始/コミット/ロールバックできません。彼の目的は、トランザクションのライフサイクルを管理するために必要な定型コードを削除し、永続化エンジン (Hibernate、JDBC、JPA など) に実際の開始/コミット/ロールバックを委譲することです。
次の例を見てください。
Session s = sessionFactory.getCurrentSession();
Transaction tx = s.beginTransaction();
try
{
doSomeStuff();
tx.commit();
}
catch(HibernateException e)
{
tx.rollback();
}
s.close();
これは、トランザクションの下で操作を実行するための標準 (ボイラープレート) です (Hibernate を使用します。JPA に切り替える必要がある場合は、コードを書き直す必要があります)。
Spring では、宣言的な方法 (AOP、XML 経由、または注釈を使用) を使用して、次の方法で標準コードを削除できます。
@Transactional
public void doSomeStuff()
{
// your code
}
たとえば、私は注釈を@Transactional
使用しており、上記のすべてのボイラー プレート コードを置き換えるために使用されています。別の機能があります。JPA への切り替えは透過的です。これは単なる構成の問題です。質問は非常に複雑で、質問に対する答えは次のとおり
です。Hibernate トランザクションと Spring トランザクションは 2 つの異なるものであるため、「比較」することはできません。Spring Transaction は「Spring transaction support」であるべき