본격적인 소개 이전에 전에 배운 내용을 잠깐 복습해보자.
사실 각각의 데이터 접근 기술은 트랜잭션 기술이 다르다. 특히 JDBC와 JPA가 다르다. 스프링은 이 문제를 해결하기 위해 추상화된 트랜잭션 기술을 제공한다.
심지어 어떤 데이터 접근기술을 사용하는지 자동으로 인식해서 구현체를 빈으로 등록해주는 기능도 있다.
선언적 트랜잭션은 @Transactional 을 이용하는 것을 말하고, 후자는 직접 트랜잭션 관련 코드를 작성하는 것을 말한다.
선언적 트랜잭션은 AOP 패턴을 이용해 이뤄진다.
프록시를 도입하면, 트랜잭션 관련 로직을 모두 프록시 객체가 갖게 된다…
다시 말하지만 트랜잭션 관련 로직은 트랜잭션 매니저를 통해 이뤄진다.
트랜잭션은 커넥션에 autoCommit을 false값을 지정하면서 시작되고, 같은 트랜잭션을 유지하기 위해 트랜잭션 동기화 매니저를 이용한다. JDBC를 포함해 대부분의 데이터 접근 기술들은 트랜잭션을 유지하기 위해 동기화 매니저를 통해 리소스를 동기화한다.