본문 바로가기
[Spring]/Spring MVC

트랜잭션 전파(Transaction Propaganda) & 트랜잭션 격리 레벨(Isolation Level) 1분 요약 정리

by 팡펑퐁 2022. 12. 4.
728x90

트랜잭션 전파(Transaction Propaganda)

  •  트랜잭션의 경계에서 진행 중인 트랜잭션의 존재 여부에 따라 어떻게 동작할 것인지 결정하는 방식으로 propagation 애트리뷰트를 통해서 설정할 수 있다.

 

@Transacional(Propagation.REQUIRED)
일반적으로 가장 많이 사용되는 Propagation 유형의 디폴트 값이다.
진행 중인 트랜잭션이 있으면 해당 트랜잭션에 참여하고, 없으면 새로 트랜잭션을 시작한다.

Propagation.REQUIRES_NEW

  •  이미 진행중인 트랜잭션과 무관하게 새로운 트랜잭션이 시작되며, 기존의 트랜잭션은 새로 시작된 트랜잭션이 종료할 때까지 중지된다.

 

Propagation.MANDATORY

  •  진행중인 트랜잭션이 없으면 예외를 발생시킨다.

 

Propagation.*NOT_SUPPORTED*

  •  트랜잭션이 필요없음을 의미한다. 진행중인 트랜잭션이 있으면 메서드 실행이 종료될 때까지 중지되며, 메서드 실행이 종료되면 다시 진행한다.

 

Propagation.*NEVER

  •  트랜잭션이 필요없음을 의미한다. 진행 중인 트랜잭션이 존재할 경우에는 예외를 발생시킨다.

 

 

트랜잭션 격리 레벨(Isolation Level)

  • 일반적으로 아래로 내려갈수록 고립도가 높아지며, 성능이 떨어진다.

Isolation.DEFAULT

  •  데이터베이스에서 제공하는 기본값

 

Isolation.READ_UNCOMMITED

  •  다른 트랜잭션에서 커밋하지 않은 데이터를 읽는 것을 허용한다.

Isolation.READ_COMMITED

  •  다른 트랜잭션에서 커밋된 데이터를 읽는 것을 허용한다.

Isolation.REPEATABLE_READ

  •  트랜잭션 내에서 한 번만 조회한 데이터를 반복해서 조회해도 같은 데이터가 조회되도록 한다.

Isolation.SERIALIZABLE

  •  동일한 데이터에 대해서 동시에 두 개 이상의 트랜잭션이 수행되지 못하도록 한다.
728x90