티스토리 뷰
아키텍쳐 개요
- 사용자 관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층, 서비스 계층, 데이터 액세스 계층 그리고 3계층과 모든 계층에서 사용되는 도메인 모델 클래스로 구성.
- 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다.
- 각 계층 사이에서는 인터페이스를 이용하여 통신하는 것이 일반적.
프리젠테이션 계층 | 브라우저 상의 웹클라이언트의 요청 및 응답을 처리 |
상위 계층 (서비스 계층, 데이터 액세스 계층)에서 발생하는 예외에 대한 처리 | |
최종 UI에서 표현해야 할 도메인 모델을 사용 | |
최종 UI에서 입력한 데이터에 대한 유효성 검증 기능을 제공 | |
비지니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능 제공 | |
@Controller 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 속함 |
서비스 계층 | 어플리케이션 비지니스 로직 처리와 비지니스와 관련된 도메인 모델의 적합성 검증 |
트랜젝션 처리 | |
프리젠테이션 계층과 데이터 액세스 계층 사이를 직접적으로 통신하지 않게 하여 어플리케이션의 유연성 증가 | |
다른 계층들과 통신하기 위한 인터페이스를 제공 | |
Service 인터페이스와 @Service 어노테이션을 사용하여 작성된 Service 구현 클래스가 이 계층에 속함 | |
데이터 액세스 계층 | 영구 저장소(관계형 데이터 베이스)의 데이터를 조작하는 데이터 액세스 로직을 객체화 |
영구 저장소의 데이터를 조회, 등록, 수정, 삭제함 | |
ORM 프레임워크 (MyBatis, Hibernate)를 주로 상용하는 계층 | |
DAO 인터페이스와 @Repository 어노테이션을 사용하여 작성된 DAO 구현 클래스가 이 계층에 속함 | |
도메인 모델 클래스 | RDBMS의 엔티티와 비슷한 개념으로 VO(Value Object) 혹은 DTO(Data Transfer Object) 객체에 해당 |
도메인 모델 클래스는 3개 계층 전체에 걸쳐 사용 | |
Private로 선언된 멤버 변수가 있고 그 변수에 대한 getter와 setter 메서드를 가진 클래스를 말함 |
사용자 관리 프로젝트 클래스 설계
출처 : Tacademy
클래스 역할
프리젠테이션 계층 | UserController | UI 계층과 서비스 계층을 연결하는 역할을 하는 클래스. |
JSP에서 UserController를 통해서 서비스 게층의 UserService를 사용 | ||
서비스 계층의 UserService 인터페이스를 구현한 객체를 IoC컨테이너가 주입해줌. |
서비스 계층 | UserService | 서비스 계층에 속한 상위 인터페이스 |
UserServiceImpl | UserService 인터페이스를 구현한 클래스 | |
복잡한 업무로직이 있을 경우에는 이 클래스에서 업무 로직을 구현하면 됨. | ||
데이터 액세스 계층의 UserDao 인터페이스를 구현한 객체를 IoC컨테이너가 주입해줌. |
데이터 액세스 계층 | UserDao | 데이터 액세스 계층에 속한 상위 인터페이스 |
UserDaoImplJDBC | UserDao 인터페이스를 구현한 클래스. 해당 클래스에 데이터 액세스 로직을 구현하면 됨. | |
SpringJDBC를 사용하는 경우에는 DataSource를 IoC컨테이너가 주입해줌. | ||
MyBatis를 사용하는 경우에는 SqlSession을 IoC가 주입해줌. |
* 다음 게시글에서 데이터 액세스 계층에 대해 좀 더 자세히 알아봄.
'Java > Spring' 카테고리의 다른 글
AOP 개요와 용어 (0) | 2017.01.09 |
---|---|
Spring JDBC (1) | 2017.01.08 |
Annotation을 이용한 Bean 등록 (0) | 2017.01.07 |
Bean 의존 관계 설정 방법 (0) | 2017.01.07 |
간단한 POJO 클래스를 통한 DI 이해 (0) | 2017.01.07 |