Spring에서 Transaction이란 쉽게 요약하자면
여러번의 DBConnection이 있을경우 설정해주는 기능을 말한다.
A테이블을 Delete 후 B테이블에 Insert할때
에러가 발생했을시 Transaction에 의해서 자동으로 Rollback이 되는 설정을 할 수도 있다.
스프링에서 제공하는 Transactional annotation 의 메소드는
https://docs.spring.io/spring/docs/5.0.4.BUILD-SNAPSHOT/javadoc-api/org/springframework/transaction/annotation/Transactional.html
이곳을 참고하면 좋을것 같다.
그 중에서도 중요하다고 생각하는 옵션인 propagation
- REQUIRED : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 새로운 트랜잭션을 생성
- REQUIRES_NEW : 부모 트랜잭션을 무시하고 무조건 새로운 트랜잭션이 생성(default)
- SUPPORT : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 nontransactionally로 실행
- MANDATORY : 부모 트랜잭션 내에서 실행되며 부모 트랜잭션이 없을 경우 예외가 발생
- NOT_SUPPORT : nontransactionally로 실행하며 부모 트랜잭션 내에서 실행될 경우 일시 정지
- NEVER : nontransactionally로 실행되며 부모 트랜잭션이 존재한다면 예외가 발생
- NESTED : 해당 메서드가 부모 트랜잭션에서 진행될 경우 별개로 커밋되거나 롤백될 수 있음. 둘러싼 트랜잭션이 없을 경우 REQUIRED와 동일하게 작동
'IT > 개발' 카테고리의 다른 글
스프링 form태그 (0) | 2019.10.09 |
---|---|
Java 파일 읽기, 파일 쓰기 (0) | 2019.10.08 |
Spring Thread(스프링 쓰레드처리) (0) | 2019.09.26 |
Oracle LISTAGG (0) | 2019.09.12 |
JAVA CSV파일 엑셀에서 열때 숫자를 문자로 인식 (0) | 2019.09.09 |