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
'[Spring] > Spring MVC' 카테고리의 다른 글
Spring에서 HTTP 통신을 통해 JSON 형식의 데이터를 주고 받을 때 사용하는 애너테이션을 정리해보자. (0) | 2023.08.14 |
---|---|
스프링 MVC의 구조 (0) | 2023.03.23 |
스프링 MVC에서의 프런트 컨트롤러(Front Controller) & 어댑터(Adapter) 패턴 (0) | 2023.03.22 |
자바에서의 MVC 패턴(Servlet -> JSP -> 스프링 MVC까지) (0) | 2023.03.16 |
HttpServletRequest & HttpServletResponse 정리 (0) | 2023.03.15 |