앞서 여기서 외부 트랜잭션과 내부 트랜잭션에 대해 설명하였다. 트랜잭션 참여에 대해서 설명을 하였는데, 이번에는 트랜잭션 참여가 아닌 새로운 트랜잭션 생성에 대해서 알아보자. 트랜잭션 참여 @Transactional을 사용할 때 옵션으로 propagation = Propagation.REQUIRED를 사용한다. @Transactional(propagation = Propagation.REQUIRED) public class MemberRepository { // 생략 } 새로운 트랜잭션 생성 @Transactional을 사용할 때 옵션으로 propagation = Propagation.REQUIRES_NEW를 사용한다. @Transactional(propagation = Propagation.REQUIR..
트랜잭션 전파를 공부하면 내부 트랜잭션과 외부 트랜잭션을 공부하게 되는데, 이때 내부 트랜잭션에서 롤백이 호출되었을 때 외부 트랜잭션에서 이를 처리하는 2가지 경우가 존재한다. 외부 트랜잭션 트랜잭션이 시작된 곳을 외부 트랜잭션이라고 한다. 외부 트랜잭션이 최종적으로 커밋 또는 롤백을 처리한다. 내부 트랜잭션 외부 트랜잭션에 참여하는 트랜잭션을 내부 트랜잭션이라고 한다. 내부 트랜잭션에서 발생한 커밋 또는 롤백은 실제로 호출되지 않는다. 커넥션은 단 한 번만 커밋 또는 롤백이 가능하기 때문에, 내부 트랜잭션에서 커밋 또는 롤백을 호출하면 외부 트랜잭션까지 트랜잭션이 사용되지 않고 중간에 종료되는 문제가 발생한다. 예외 1 - RuntimeException MemberService에서 MemberRepos..