[Spring] 0717정리

charco·2021년 7월 17일
0

토비스프링

목록 보기
6/11
post-thumbnail

  • TransactionSynchronization -> 트랜잭션을 시작하기 위해 만든 Connection 오브젝트를 어딘가에 저장해두고 이후에 호출되는 DAO메서드에서는 저장된 Connection을 가져다가 사용하게 하는 것.

  • TransactionDefinition 인터페이스 -> 트랜잭션의 동작 방식에 영향을 줄 수 있는 네가지 속성을 정의

  • Transaction Propagation -> 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을때와 없을때 각각 어떻게 동작할 것인가

  • 격리수준 -> 만약 모든 트랜잭션들이 독립적으로 동작한다면 성능이 저하됨

  • Timeout -> 트랜잭션을 수행하는 제한시간

  • Readonly -> 트랜잭션 내에서 데이터를 조작하는 시도를 막아줌

  • TransactionAdviceTransactionDefinition 오브젝트를 생성하고 사용함

  • TransactionInterceptor -> 트랜잭션 경계설정 Advice 로 사용할 수 있도록 만들어짐

  • TransactionAttribute ->
    propagation, isolation, readonly, time-out. -Exception1, +Exception2

  • TransactionInterceptor 이 transactionManager 와 transactionAttributes 를 수정자로 받음

  • A트랜잭션이 B트랜잭션에 참여하면 B트랜잭션의 속성을 따름

  • 포인트컷이 부가기능을 적용할 후보 메서드들을 선정하고
    어드바이스의 트랜잭션 전파속성에 따라 메소드별로 트랜잭션을 적용한다

  • 등록과 조회 메서드에도 트랜잭션을 추가해야 하는 이유
    등록 -> 다른 트랜잭션에 참여할 가능성이 높음, DB의 정보를 다루는 작업이 추가될 가능성이 높음
    조회 -> readonly 로 설정하면 성능이 향상됨. 시간 지정 가능. 격리 수준에 따라 조회도 반드시 트랜잭션 안에서 진행해야 할 필요가 생기기도 함

  • 타깃 오브젝트가 자기 자신의 메서드를 호출할 때는 프록시를 통한 부가기능의 적용이 일어나지 않음

  • @Transactional
    @Target -> 애노테이션 사용할 대상 지정
    @Retension -> 애노테이션 정보가 언제까지 유지되는지
    @Inherited -> 상속을 통해서도 애노테이션 정보를 얻을 수 있게 함
    TransactionAttributeSourcePoincut이 @Transacional이 달린 빈들을 모두 찾아 후보로 돌려줌.

  • AnnotationTransactionAttributeSource -> @Transactional 에서 트랜잭션 속성을 가져오고 TransactionInterceptor 가 이걸 씀

  • 대체 정책 ->
    타깃메서드에 @Transactional이 있나? -> 타깃 클래스에 있나? -> 선언 메서드에 있나? -> 선언 타입(클래스, 인터페이스) 에 있나?

  • DeclarativeTransaction -> AOP를 이용해 코드 외부에서 트랜잭션의 기능을 부여해주고 속성을 지정할 수 있게 하는 방법

  • ProgrammaticTransaction -> TransactionTemplate 이나 개별 데이터 기술의 트랜잭션 API를 사용해 직접 코드안에서 사용하는 방법

  • JdbcTemplate 은 트랜잭션이 시작된 것이 있으면 그 트랜잭션에 자동으로 참여함

  • 테스트에 @Transactional -> 테스트 프레임워크에 의해 트랜잭션을 부여해주는 용도로 쓰임
    메서드 실행 전에 트랜잭션을 생성해주고 메서드가 종료하면 트랜잭션이 종료됨

  • @Rollback(boolean)
    애노테이션 이름 그대로 기능
    메서드 레벨에서만 적용 가능

모든 테스트 메서드를 커밋시키고 싶으면?

  • @TransactionConfiguration(defaultRollback = boolean)
    롤백에 대한 공통 속성 지장
profile
아직 배우는 중입니다

0개의 댓글