본문으로 바로가기

[Spring] @Transactional

category Program/Spring Framework 2022. 4. 20. 14:30

테스트할때 사용할 수 있음

어노테이션방식으로 @Transactional을 메소드, 클래스, 인터페이스 위에 추가하여 사용함.

이걸 선언적 트랜잭션이라 하며, 프록시 객체가 생성되어 자동으로 commit또는 rolback을 진행함.

 
@Transactional
public void addUser(UserDTO dto) throws Exception{
. . .
}

@Transactional 옵션

  1. isolation 트랜잭션에서 일관성 없는 데이터 허용 수준을 설정함
  2. propagation 트랜잭션 동작 도중 다른 트랜잭션을 호출 할 때 어떻게 할 지 지정함
  3. noRollbackFor 특정 예외 발생 시 rollback하지 않음.
  4. rollbackFor 특정 예외 발생 시 rollback 함
  5. timeout 지정한 시간 내 메소드 수행 완료되지 않으면 rollback (-1은 timeout 없음)
  6. readOnly 읽기전용으로 설정함
  • @Transactional은 기본적으로 Unchecked Exception, Error 만을 rollback함

모든 예외에 대해서 rollback 하고 싶으면 (rollback = Excepion.class)옵션을 줘야 함