개발자는 SQL 쿼리 작성, 쿼리에 전달할 인자, SELECT 구문일 경우 조회 결과를 추출하는 것만 집중할 수 있도록 라이브러리를 만들자.
- UserDaoTest의 모든 테스트 케이스가 통과한다.
- UserDao가 아닌 JdbcTemplate 클래스에서 JDBC와 관련된 처리를 담당하고 있다.
리팩터링
- 트랜잭션 경계 설정하기
- 트랜잭션 동기화 적용하기
- 트랜잭션 서비스 추상화하기
- 트랜잭션 롤백이 적용되어 UserServiceTest 클래스의 testTransactionRollback() 테스트 케이스가 통과한다.
- 트랜잭션 서비스와 애플리케이션 서비스가 분리되었다.