スタンドアロンのJavaアプリケーションの一部として実行されるデータアクセスクラスがあります。現在動作しています。つまり、トランザクションマネージャーが定義されていますが、クラスをリファクタリングしてトランザクションのスコープを縮小したいのですが、実行するとorg.hibernate.HibernateException:スレッドにバインドされたHibernateセッションがなく、構成で許可されませんここで非トランザクションのものを作成します。これは、 @ Transactionalを移動すると認識されなくなることを意味します。
私の元のバージョンでは、リファクタリングされたメソッドがプライベートでしたが、場合によってはアノテーションが取得されないため、パブリックに変更することをお勧めします。
public class DoStuff {
@Transactional
public void originalMethod() {
// do database stuff
...
// do non-database stuff that is time consuming
...
}
}
私がやりたいのは、次のようにリファクタリングすることです
public class DoStuff {
public void originalMethod() {
doDatabaseStuff()
doNonDatabaseStuff()
}
@Transactional
public void doDatabaseStuff() {
...
}
public void doNonDatabaseStuff() {
...
}
}