기본 개념

✅ @Transactional이 하는 일

  1. 트랜잭션 시작
  2. 메서드 실행 (SQL 실행)
  3. 정상 실행되면 commit
  4. 예외 발생 시 rollback

결론: @Transactional Best Practice

Service 계층에서 사용 (Controller에는 사용하지 말 것!)

기본적으로 REQUIRED 사용, 필요하면 REQUIRES_NEW 활용

읽기 전용 메서드에는 readOnly = true 설정

Checked Exception 롤백 시 rollbackFor = Exception.class 추가

같은 클래스 내부에서 호출하면 트랜잭션이 적용되지 않음 (Self-Invocation 문제)

옵션

적용 계층