스프링 트랜잭션 2

트랜잭션 격리 수준, 스프링 @Transactional

1. 트랜잭션 격리 수준트랜잭션 : 데이터베이스의 일관성과 무결성을 유지하기 위한 논리적인 작업 단위. 원자성, 일관성, 고립성, 지속성을 유지한다.트랜잭션 격리 수준(isolation level) : 트랜잭션이 얼만큼 고립되어 있는 지 그 정도를 말한다. 동시에 여러 트랜잭션이 진행될 때, 이 격리 수준에 따라서 다른 트랜잭션에서 작업되는 데이터에 얼만큼 접근할 수 있는 지가 제어된다.  격리 수준에 따라 발생할 수 있는 문제점더티 리드 : 어떤 트랜잭션에서 처리한 작업이 완료(COMMIT)되지 않았음에도, 다른 트랜잭션에서 해당 작업에 의한 데이터를 볼 수 있는 현상이다. 이는 데이터의 일관성을 깨뜨려서 정합성에 큰 문제를 일으킬 수 있다.ex) A,B 트랜잭션A -> 선재의 계좌 잔액 10000에서..

DataBase 2024.05.29

[토비의 스프링vol.1 6장] AOP - 1

AOP-1 정리 노션 페이지 AOP 적용 대상 : 선언적 트랜잭션 6.1 트랜잭션 코드의 분리 6.1.1 메소드 분리 비즈니스 로직과 트랜잭션 경계설정은 완벽하게 독립적 트랙잭션의 시작과 종료 사이에 비즈니스 로직이 실행되는 조건만 지키면 됨 → 비즈니스 로직을 담당하는 코드를 메소드로 추출해서 독립 6.1.2 DI를 사용한 클래스의 분리 비즈니스 로직 분리 but 트랜잭션 담당 코드가 여전히 서비스 안에 있음 DI 의 기본 아이디어 : 실제 사용할 오브젝트의 클래스 정체는 감추고 인터페이스 통해 간접 접근 → 이로 인해 구현 클래스를 외부에서 자유롭게 변경 가능 인터페이스 이용해 구현 클래스 클라이언트에 노출하지 않고 런타임 시에 DI를 통해 적용하는 방법을 쓰는 이유 → 구현 클래스를 상황에 따라 바..