티스토리 뷰

Spring

[Spring] @Transactional

PeonyF 2023. 4. 28. 16:59
반응형

@Transactional

Spring Framework에서 제공하는 트랜잭션 처리를 위한 애노테이션

-> 데이터베이스 작업을 하나의 트랜잭션으로 묶어서 처리

 

ex1.회원가입을 처리하는 메소드에 @Transactional이 있다면,

-> 회원 정보를 저장하는 데이터베이스 작업이 트랜잭션으로 묶여서 처리 

-> 회원 정보 저장 작업 중 어떤 문제가 발생하면, 트랜잭션이 롤백되어 이전 상태로 되돌아

 

ex2. 은행 계좌 이체를 수행하는 경우

-> 계좌 이체 작업은 출금/입금 두개의 작업으로 되어있음

-> 두 작업이 모두 성공해야만 계좌 이체가 완료

-> 출금 작업과 입금 작업을 하나의 트랜잭션으로 묶어서 실행

 

트랜잭션이란?

데이터베이스에서 수행되는 작업의 논리적인 단위를 말합니다. 데이터베이스에서 작업을 수행할 때는, 일반적으로 여러 개의 데이터베이스 작업이 하나의 논리적인 단위로 묶여서 실행됩니다. 이러한 논리적인 작업 단위를 트랜잭션이라고 합니다.여러 개의 데이터베이스 작업이 모두 성공하거나 모두 실패하는 것을 보장합니다.

즉, 트랜잭션 내의 작업 중 하나라도 실패하면 모든 작업이 롤백되어 이전 상태로 되돌아가게 됩니다.

 

@Transactional 속성

  • propagation : 현재 트랙잭션이 존재하는 경우에 어떻게 처리할지 결정. 기본값은 REQUIRED로 현재 트랜잭션이 존재하면, 해당 트랙잭션에 참여, 존재X시 새로운 트랜잭션을 생성
  • isolation : 다른 트랜잭션에 의해 변경된 데이터를 현재 트랜잭션에서 어떻게 처리할지 결정. 기본값은  DEFAULT
  • timeout : 트랜잭션 수행 시간이 설정한 시간을 초과하면 롤백 처리(기본값은 -1로 시간 제한 없음)
  • readOnly : 읽기 전용 트랜잭션, 기본값은 false로 읽기 쓰기 모두 가능
  • rollbackFor : 롤백이 수행되어야 하는 예외클래스를 지정. 지정한 예외 클래스가 발생시, 롤백처리O
  • noRollbackFor: 롤백이 수행되지 않아야하는 예외 클래스 지정, 지정한 예외 클래스가 발생시, 롤백처리X

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함