728x90 Backend/Spring9 [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. [Spring] Transaction - 트랜잭션 전파(Transaction Propagation) [Spring] 트랜잭션 전파(Transaction Propagation)트랜잭션 전파(Transaction Propagation)란 이미 진행 중인 트랜잭션이 있을 때, 새로 호출되는 메서드의 트랜잭션을 어떻게 처리할지(합류/분리/금지)를 정하는 정책입니다. 스프링은 기본적으로 프록시 기반 AOP로 @Transactional을 적용하므로, 다른 빈에서 ‘public 메서드’를 호출할 때 전파 규칙이 동작합니다. (같은 클래스 내부 self-invocation은 프록시를 안 거치기 때문에 전파가 적용되지 않으니 주의 바랍니다.) 1. @Transactional 메타데이터 해석 우선순위 Transaction Advice는 호출 시점에 TransactionAttributeSource를 통해 메타데이터를 조회.. 2025. 8. 17. 이전 1 2 3 다음 728x90