기술과 서비스에 대한 추상화 기법을 이용하면 특정 기술 환경에 종속되지 않은 포터블한 코드를 만들 수 있다.
UserDao
와 UserService
→ 같은 애플리케이션 로직을 담은 코드지만 내용에 따라 분리
애플리케이션 비즈니스 로직과
UserService
- 순수하게 사용자 관리의 업무 비즈니스 로직UserDao
- 데이터를 어떻게 가져오고 등록할 것인가에 대한 데이터 액세스 로직UserDao
와 UserService
는 인터페이스와 DI 를 통해 연결됨으로 결합도가 낮아졌다.
UserDao
: DB 연결을 생성하는 방법에 대해 독립적이다.
DataSource 인터페이스와 DI 를 통해 추상화된 방식으로 로우 레벨의 DB 연결 기술을 사용하기 때문
로우 레벨의 DB 연결 기술이 변해도 UserDao 코드는 변하지 않는다.
: UserDao 와 DB 연결 기술도 결합도가 낮다.
UserService
와 트랜잭션 기술과도 스프링이 제공하는PlatformTraszctionManager
인터페이스를 통한 추상화 계층을 사이에 두고 사용하게 함
⇒ 구체적인 트랜잭션 기술에 독립적인 코드가 되었다.
UserServcie
는 영향을 받지 않는다.UserDao
- DB 연결기술, UserService
- 트랜잭션 기술 의 결합도가 낮은 분리
⇒ 애플리케이션 코드를 로우 레벨의 기술 서비스와 환경에서 독립시킨다.