트랜잭션 스케줄과 격리 수준
트랜잭션이 섞여 실행되는 순서인 스케줄과 시리얼라이저블의 뜻, DB가 검사 대신 락과 MVCC라는 규칙을 쓰는 이유, 격리 수준 네 단계와 데드락을 예제 흐름도로 정리합니다.
트랜잭션이 섞여 실행되는 순서인 스케줄과 시리얼라이저블의 뜻, DB가 검사 대신 락과 MVCC라는 규칙을 쓰는 이유, 격리 수준 네 단계와 데드락을 예제 흐름도로 정리합니다.
실무 프로젝트 전반에 REQUIRES_NEW가 걸려 있던 원인을 프록시 패턴과 롤백 시점, 컨트롤러에 걸린 AOP 트랜잭션 설정에서 찾아 분석한 과정을 정리합니다.
락 기반 동시성 제어의 한계를 살펴보고, MVCC가 커밋된 데이터만 읽는 방식과 트랜잭션 격리 수준에 따라 읽는 데이터가 달라지는 원리를 예제 흐름도와 함께 정리합니다.
카프카 컨슈머 3개가 같은 데이터를 동시에 적재하며 생긴 중복 적재 문제와 분산락을 이용한 해결 방법, 이를 찾아보며 공부한 트랜잭션 ACID와 스케줄·회복 가능성 이론을 흐름도와 함께 정리합니다.
애그리거트로 모델을 묶는 기준과 애그리거트 루트의 역할을 정리하고, 한 트랜잭션에서 한 애그리거트만 수정해야 하는 이유와 리포지터리 단위, ID를 이용한 애그리거트 참조 방식을 설명합니다.
같은 서비스 안에서 @Transactional 메서드를 자기 호출해 롤백이 안 되는 문제를 실제 운영 코드에서 겪고, 트랜잭션 이름을 직접 확인하며 별도 서비스로 분리해 해결한 과정을 기록합니다.
트랜잭션 매니저 빈이 여러 개 등록된 환경에서 테스트 코드가 NoUniqueBeanDefinitionException을 남긴 원인과, @Transactional에 트랜잭션 매니저 이름을 지정해 해결한 과정을 정리합니다.
트랜잭션의 ACID 성질과 @Transactional의 propagation, isolation, rollbackFor, noRollbackFor, timeout, readOnly 옵션을 예제 흐름도와 함께 정리합니다.