반응형
참고문헌
: 토비의 스프링 3.1
프로그래밍 트랜젝션
: TransactionManager에 TrasansactionTemplate를 사용하여 트랜잭션을 사용한다.
XML 트랜젝션
: XML에 tx네임스페이스를 사용한다.
: advice에 transactionManager, point-cut은 AspectJ로 타겟팅을 정한다.
선언전 트랜젝션
: 어노테이션 @Transactional을 사용하여 트랜잭션 설정
스프링 AOP, AspectJ 트랜잭션
스프링 AOP
: JDK 다이내믹 프록시를 사용하여 AOP를 구현한다.
: 인터페이스, 인터페이스 메소드 어노테이션을 통해서만 구현이 가능하다.
: 인터페이스 구현을 통해 AOP가 구현되기 때문에, 트랜잭션 안에서 같은 클래스 메소드를 호출시 트랜젝션을 거치지 않는다.
AspectJ 트랜잭션
: CCGLIB를 통해서 바이트코드를 생성하여 AOP를 구현한다.
: 클래스, 클래스 메소드 어노테이션을 통해서만 구현이 가능하다.
: 클래스 메소드 안에 직접 코드가 삽입되는 형태이다.
: 클래스 상속을 통해 AOP가 구현되기 떄문에, final 메소드의 경우 트랜잭션 생성이되지 않는다.
트랜잭션 적용순서
: 우선순위가 높은 것이 적용된다.
: 인터페이스 -> 인터페이스 메소드 -> 클래스 -> 클래스 메소드(클래스 메소드 우선수위가 제일 높다.)
: 인터페이스에 Transactional이 적용되고, 클래스 메소드에 Transactional이 적용되면 클래스 메소드가 적용된다.
반응형