본문 바로가기
728x90

Transaction3

[String] Transaction - rollback 속성 [String] Transaction - rollback 속성1. 기본 롤백 규칙 롤백됨(default): RuntimeException과 Error (및 그 하위 타입)롤백되지 않음: 체크 예외(Exception의 하위지만 RuntimeException이 아닌 것)예외 패키지 구조java.lang.Throwable├─ java.lang.Error // 시스템 레벨(복구 불가) - 언체크│ ├─ OutOfMemoryError│ ├─ StackOverflowError│ └─ LinkageError …└─ java.lang.Exception // 애플리케이션 레벨 ├─ (Checked Exceptions) .. 2025. 8. 31.
[Spring] Transaction - 격리 수준(Isolation) [Spring] Transaction - 격리 수준(Isolation) 트랜잭션 격리수준(Isolation level)은 동시성과 일관성의 균형을 잡는 핵심 레버입니다. Spring의 @Transactional(isolation = …) 한 줄은 결국 JDBC Connection의 isolation을 조정해 DB 엔진(InnoDB, PostgreSQL 등)에 동작을 위임할 수 있습니다. 1. 이상현상 DB 트랜잭션에서 자주 말하는 세 가지 이상현상이 있습니다. 이상현상을 알아야 Isolation을 알 수 있기 때문에 참고하시길 바랍니다.IsolationDirty ReadNon-Repeatable ReadPhantom ReadREAD_UNCOMMITTED✅ (이상현상 발생)✅ (이상현상 발생)✅ (이상현.. 2025. 8. 17.
[Spring] Transaction - @TransactionalEventListener를 이용한 이벤트 처리 [Spring] Transaction - @TransactionalEventListener를 이용한 이벤트 처리 일반 @EventListener는 트랜잭션의 성공/실패와 독립적으로 동작합니다. 반면 @TransactionalEventListener는 트랜잭션의 상태(커밋/롤백/완료 직전) 에 맞춰 리스너 실행 시점을 제어합니다. 트랜잭션 안팎의 경계를 정확히 지키면서 후속 작업(이메일 발송, 캐시 무효화, 메시지 발행, 인덱싱 등) 을 안전하게 실행하고 싶다면 @TransactionalEventListener를 사용할 수 있습니다. 1. 핵심 옵션phase = AFTER_COMMIT(기본): 커밋 성공 후 실행phase = AFTER_ROLLBACK: 롤백 시에만 실행phase = AFTER_COMP.. 2025. 8. 17.
728x90