CODEDRAGON ㆍDevelopment/Spring
사용자 관리 아키텍쳐(Architecture)
· 대부분의 중·대규모 웹 애플리케이션은 효율적인 개발 및 유지보수를 위하여 계층화(Layering)하여 개발하는 것이 일반적이다. (역할별로 나누어서 관리)
· 사용자관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층(Presentation Layer), 서비스 계층(Service Layer), 데이터액세스 계층(Data Access Layer) 3계층과 모든 계층에서 사용되는 도메인 모델 클래스로 구성되어 있습니다.
· 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 고유한 기능들이 있습니다.
사용자 관리 프로젝트 아키텍처 도식도
세 가지 계층은 독립적으로 분리할 수 있도록 구현해야 하며, 일반적으로 각 계층 사이에서는 인터페이스(Interface)를 이용하여 통신하는 것이 일반적입니다
계층 |
설명 |
프리젠테이션 계층 |
· 브라우저상의 웹클라이언트의 요청 및 응답을 처리 · 상위계층(서비스계층, 데이터 액세스계층)에서 발생하는 Exception에 대한 처리 · 최종 UI에서 표현해야 할 도메인 모델 클래스을 사용 · 최종 UI에서 입력한 데이터에 대한 유효성 검증(Validation) 기능을 제공 · 비즈니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능을 제공 · @Controller 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 속합니다. |
서비스 계층 |
· 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증 · 트랜잭션(Transaction) 처리 · 프리젠테이션 계층과 데이터 액세스 계층 사이를 연결하는 역할을 함으로써 두 계층이 직접적으로 통신하지 않게 하여 애플리케이션의 유연성을 증가시켜줍니다. · 다른 계층들과 통신하기 위한 인터페이스를 제공 · Service 인터페이스와 @Service 어노테이션을 사용하여 작성된 Service 구현 클래스가 이 계층에 속합니다. |
데이터 액세스 계층 |
· 영구 저장소(관계형 데이터베이스)의 데이터를 조작하는 데이터 액세스 로직을 객체화 · 영구 저장소의 데이터를 조회, 등록, 수정, 삭제에 대한 CRUD작업 수행 · ORM(Object Relational Mapping) 프레임워크(MyBatis, Hibernate)를 주로 사용하는 계층 · DAO 인터페이스와 @Repository 어노테이션을 사용하여 작성된 DAO 구현 클래스가 이 계층에 속합니다. · 데이터 액세스 계층은 DAO 패턴을 적용하여 비즈니스 로직과 데이터 액세스 로직을 분리하는 것이 원칙입니다. · 비즈니스 로직이 없거나 단순하면 DAO와 서비스 계층을 통합 할 수도 있지만 의미 있는 비즈니스 로직을 가진 엔터프라이즈 애플리케이션이라면 데이터 액세스 계층을 DAO 패턴으로 분리해야 한다. · DAO패턴은 서비스계층에 영향을 주지 않고 데이터 액세스 기술을 변경할 수 있는 장점을 가지고 있다. |
도메인모델클래스 |
· 프리젠테이션 계층(Presentation Layer), 서비스 계층(Service Layer), 데이터액세스 계층(Data Access Layer) 모든 계층에서 공통으로 사용되는 클래스입니다. · 관계형 데이터 베이스의 엔티티와 비슷한 개념을 가지는 것으로 실제 VO(Value Object) 혹은 DTO(Data Transfer Object) 객체에 해당 도메인 모델 클래스는 3개의 계층 전체에 걸쳐 사용 · private으로 선언된 멤버변수가 있고, 그 변수에 대한 getter와 setter 메서드를 가진 클래스를 말합니다. |
'Development > Spring' 카테고리의 다른 글
Spring JDBC 라이브러리 설치 (0) | 2017.05.11 |
---|---|
Spring JDBC (0) | 2017.05.02 |
SpringFramework API 문서 (0) | 2017.04.09 |
Maven - 라이브러리 관리 + 빌드 도구 (0) | 2017.04.04 |
Servers 창 오픈하기 - STS, eclipse (0) | 2017.03.30 |