본문으로 바로가기

Transactional

category Backend/Spring 2017. 12. 3. 21:42
    반응형

    참고문헌

    : 토비의 스프링 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이 적용되면 클래스 메소드가 적용된다.




    반응형