[Spring] @Transactional 정리
2022. 4. 3. 20:54ㆍDev/Spring
📌 @Transactional 이란
스프링에서 지원하는 트랜젝션 처리 방식이다. @Transactional을 메소드, 클래스, 인터페이스 위에 추가하면 트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 commit 혹은 rollback을 진행해준다.
📌 @Transactional의 속성
속성 | 설명 |
propagation | Tx의 경계(boundary)를 설정하는 방법을 지정 |
isolation | Tx의 isolation level을 지정. DEFAULT, READ_UNCOMMITED, READ_COMMITED,REPEATABLE_READ, SERIALIZABALE |
readOnly | Tx이 데이터를 읽기만 하는 경우, true로 지정하면 성능이 향상 |
rollbackFor | 지정된 예외가 발생하면, Tx을 rollback RuntimeException과 Error는 자동 rollback |
noRollbackFor | 지정된 예외가 발생해도, Tx을 rollback하지 않음 |
timeout | 지정된 시간(초) 내에 Tx이 종료되지 않으면, Tx를 강제 종료 |
📌 propagation 속성
값 | 설명 |
REQUIRED | Tx이 진행중이면 참여하고, 없으면 새로운 Tx 시작(default) |
REQUIRES_NEW | Tx이 진행중이든 아니든, 새로 Tx 시작 |
NESTED | Tx이 진행중이면, Tx의 내부 Tx로 실행 |
MANDATORY | 반드시 진행 중인 Tx내에서만 실행가능. 아니면 예외 발생 |
SUPPORTS | Tx이 진행중이든 아니든 상관없이 실행 |
NOT_SUPPORTED | Tx없이 처리. Tx이 진행중이면 잠시 중단 |
NEVER | Tx없이 처리. Tx이 진행중이면 예외 발생 |
개인 학습 기록용이기 때문에 오류가 있을 수 있습니다.
양해 부탁드립니다🙂
📚 참고
패스트캠퍼스 강의 <스프링의 정석: 남궁성과 끝까지 간다>
'Dev > Spring' 카테고리의 다른 글
[Java] 지네릭스(Generics) 정리 (0) | 2022.04.07 |
---|---|
[Spring] Log4Jdbc Log4j2 설정 방법 (0) | 2022.04.01 |
[Spring] Spring AOP (0) | 2022.03.27 |
[IntelliJ] 이클립스 스프링 프로젝트 인텔리제이로 여는 방법 (0) | 2022.03.26 |