- JDBC 62022년 07월 13일
- starryeye
- 작성자
- 2022.07.13.:54
TransactionTemplate
템플릿 콜백 패턴을 사용하여
서비스 계층에서 Transaction을 사용함에 있어서 메서드마다 등장하는 코드를 줄일 수 있다.
(repository 계층의 메서드 성공여부 try-catch에 따른 commit, rollback 코드가 없어짐)
하지만.. 서비스 계층에 비즈니스 로직만 순수하게 있는 상황은 아니다.
트랜잭션 AOP (선언적 트랜잭션 관리)
서비스 계층에 순수 비즈니스 로직만 남길 수 있다.
@Transactional 어노테이션만 써주고.. 해당 비즈니스 로직만 구현하면 된다..
(스프링 부트에서 제공하기에.. 스프링 부트 종속성이 생김)
아래는 스프링이 트랜잭션 AOP를 적용하기 위해 스프링 컨테이너에 자동으로 등록하는 빈이다.
어드바이저 : BeanFactoryTransactionAttributeSourceAdvisor
포인트 컷 : TransactionAttributeSourcePointcut
어드바이스 : TransactionInterceptor
스프링 빈으로 동작하는 개념이므로..
DataSource와 PlatformTransactionManager의 구현체들을 스프링 빈으로 등록해야한다.
<참고>
JDBC의 경우...
DataSource : DriverManagerDataSource
-> 커넥션 풀 사용하지 않음..
(참고로 dataSource의 이름으로 스프링 빈을 등록하지 않으면.. HikariDataSource가 기본 등록된다.)
PlatformTransactionManager : DataSourceTransactionManager
다음글이전글이전 글이 없습니다.댓글