Spring AOP を使用して、Spring + Hibernate プロジェクトをトランザクション対応に構成しました。
DAO メソッドをチェックインすると、TransactionSynchronizationManager.isActualTransactionActive()
true と表示されます。
サービス クラスから 2 つの DAO メソッドを呼び出しています。2 番目の DAO メソッドでは、'devide by zero'
意図的にエラーをスローし、2 つのメソッドがロールバックするかどうかを確認します。
現在、最初のものは新しいレコードをうまく挿入しているようです。最初のメソッドは
ロールバックすべきではありませんか?
更新
前の質問を参照できますが、これは長すぎると思います。
Spring 3.x および Hibernate 4 でのトランザクション管理
質問を (できる限り) 要約すると
、DAO クラスから 2 つのメソッドを呼び出す 1 つのサービス クラス メソッドがあります。
そのサービス クラスは、Spring MVC コントローラーとその委任者から呼び出されています。
次のように aop:config を取得しました
<aop:config proxy-target-class="true">
<aop:pointcut id="transactionalServiceOperation" expression="execution(* kr.co.sgis.services.web.cooingbee.Crudable.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionalServiceOperation"/>
</aop:config>
私のインターフェース Crudable は次のようになります
public interface Crudable {
public int delete(CooingbeeFetchable bean);
public int save(CooingbeeFetchable bean);
public int update(CooingbeeFetchable bean);
public Set<CooingbeeFetchable> list(CooingbeeFetchable bean);
public CooingbeeFetchable get(int id);
public int count(CooingbeeFetchable bean);
public int save2(CooingbeeFetchable bean);
}
DAO と Service クラスの両方が Cruadable インターフェースを実装しています。たぶんそれが、私が期待したように機能していない理由だと思いますか?
長すぎずに十分な情報を提供できたことを願っています:)