Spring AOP를 사용하여 트랜잭션이되도록 구성된 Spring + Hibernate 프로젝트가있다.
일반 Spring + Hibernate 트랜잭션 동작?
DAO 방법을 TransactionSynchronizationManager.isActualTransactionActive()
으로 체크인하면 true로 표시됩니다.
내 서비스 클래스에서 두 DAO 메서드를 호출하고 있는데 두 번째 DAO 메서드에서는 'devide by zero'
을 의도적으로 오류를 throw하고 두 메서드가 롤백되는지 확인합니다.
현재 첫 번째 레코드는 새 레코드를 삽입하는 것 같습니다. 첫 번째 방법
을 롤백하면 안됩니까?
업데이트 내 이전 질문을 참조 할 수 있지만 너무 길 수 있습니다.
Transaction Management in Spring 3.x and Hibernate 4
는, (내가 할 수있는만큼) 질문을 요약하면
나는 DAO 클래스에서이 메소드를 호출 한 서비스 클래스의 방법이있다.
해당 서비스 클래스가 spring mvc 컨트롤러 및 해당 대리자에서 호출되고 있습니다.
내 AOP있어
:
내 인터페이스 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 및 서비스 클래스 모두 같습니다
<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>
을 다음과 같이 설정을 Cruadable를 구현 인터페이스. 이제 예상대로 작동하지 않는 이유가 일까요?
희망이 너무 길지 않아 충분한 정보를 제공해 주셨습니다.)