사용자 관리 아키텍쳐(Architecture)

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