DEFAULT : 기본 격리 수준
READ_UNCOMMITED : 아직 커밋되지 않은 데이터를 읽을 수 있음
READ_COMMITED : Dirty Read를 방지하기 위해 Commit된 데이터만 읽을 수 있음
REPEATABLE READ : 트랜잭션이 완료될 때까지 조회한 모든 데이터에 shared lock이 걸리므로 트랜잭션이 종료될 때까지 다른 트랜잭션은 그 영역에 해당하는 데이터를 수정할 수 없음
SERIALIZABLE : 엄격한 트랜잭션 격리수준, 완벽한 읽기 일관성 모드 제공, PHANTOM READ 상태가 발생하지 않지만 동시성 처리 성능이 급격히 떨어질 수 있음
어떤 트랜잭션이 동작중인 과정에서 다른 트랜잭션을 실행할 경우 어떻게 처리하는 가
REQUIRED : 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 새로운 트랜잭션 시작
SUPPORTS : 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 트랜잭션 없이 처리
REQUIRED_NEW : 항상 새로운 트랜잭션 시작, 이미 진행중인 트랜잭션이 있다면 잠시 보류
MANDATORY : 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 새로운 트랜잭션을 시작하는 대신 예외를 발생시킴. 혼자서는 독립적으로 수행되면 안되는 경우에 사용
NOT_SUPPORTED : 트랜잭션을 사용하지 않고 처리함. 이미 진행중인 트랜잭션이 있다면 잠시 보류
NEVER : 트랜잭션을 사용하지 않도록 강제함. 이미 진행 중인 트랜잭션 또한 허용하지 않으며 있다면 예외 발생시킴
NESTED : 이미 실행중인 트랜잭션이 있다면 중첩하여 트랜잭션을 진행함. 부모 트랜잭션은 중첩 트랜잭션에 영향을 주지만 중첩 트랜잭션은 부모 트랜잭션에 영향을 주지 않음
읽기 옵션을 설정하면 트랜잭션이 커밋되어도 영속성 컨텍스트를 Flush하지 않음
플러시할 때 수행되는 엔티티의 스냅샷 비교 로직이 수행되지 않으므로 성능을 향상 시킬 수 있음
https://github.com/Eundms/learn-spring
[패키징및배포] Jar vs War (0) | 2024.12.21 |
---|---|
[Spring] 템플릿 메서드 디자인 패턴, 템플릿 콜백 패턴 (4) | 2024.12.16 |
[테스트] 단위테스트 vs 통합테스트 vs 인수테스트 (0) | 2024.12.11 |
[스프링] OSIV, AOP (0) | 2024.11.27 |
[스프링] 동시성 문제, ThreadLocal (0) | 2024.11.25 |