웹 애플리케이션은 효율적인 개발 및 유지보수를 위하여 계층화(Layering)하여 개발하는 것이 일반적이다.
프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층, 서비스 계층, 데이터액세스 계층 이 3계층과 모든 계층에서 사용되는 도메인 모델 클래스로 구성되어 있다.
각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다.
각 계층 사이에서는 인터페이스를 사용해서 의존관계를 맺도록 통신하는 것을 원칙으로 한다.
프리젠테이션 계층
- 브라우저 상의 웹클라이언트의 요청 및 응답을 처리
- 상위 계층(서비스 계층, 데이터 액세스 계층)에서 발생하는 Exception에 대한 처리
- UI에서 입력한 데이터에 대한 유효성 검증 기능을 제공
- 비즈니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능을 제공
- @Controller를 사용하여 작성된 클래스가 프리젠테이션 계층에 속함
서비스 계층
- 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증
- 트랜잭션 처리
- 프리젠테이션 계층과 데이터 액세스 계층 사이를 연결하는 역할로서 두 계층이 직접적으로 통신하기 않게 하여 애플리케이션의 유연성 증가
- 다른 계층들과 통신하기 위한 인터페이스를 제공
- Service 인터페이스와 @Service를 사용하여 작성된 구현 클래스가 서비스 계층에 속함
데이터 액세스 계층
- 영구 저장소(관계형 데이터베이스)의 데이터를 조작하는 데이터 액세스 로직을 객체화
- 영구 저장소의 데이터를 조회, 등록, 수정, 삭제 함
- ORM(Object Relational Mapping) 프레임워크(MyBatis, Hibernate)를 주로 사용하는 계층
- DAO 인터페이스와 @Repository를 사용하여 작성된 DAO 구현 클래스가 데이터 액세스 계층에 속함
도메인 모델 클래스
- 데이터베이스 엔티티와 비슷한 개념을 가지는 것으로 VO(Value Object) 혹은 DTO(Data Transfer Object) 객체에 해당
- 3개의 계층 전체에 걸쳐 사용
- private으로 선언된 멤버변수가 있고, 그 변수에 대한 getter, setter 메소드를 가진 클래스를 말한다.
'개발 관련 지식 > Spring Framework Basic' 카테고리의 다른 글
MyBatis (0) | 2020.05.05 |
---|---|
MVC 패턴의 개념과 모델2 아키텍쳐 (0) | 2020.05.03 |
JDBC (0) | 2020.04.25 |
Bean 등록 및 의존관계 설정 Annotation (0) | 2020.04.24 |
jUnit 테스트 프레임워크 (0) | 2020.04.23 |