2019백업

10) 아키텍쳐의 개요

728x90

아키텍쳐 개요


  - 대부분의 중.대규모 웹 애플리케이션은 효율적인 개발 및 유지보수를 위하여 계층화(Layering)하여 개발하는 것이 일반적이다.
  - 사용자관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 1) 프리젠테이션 계층 2) 서비스 계층 3) 데이터액세스 계층과 모든 계층에서 사용되는 도메인 모델 클래스로 구성되어 있다.
  - 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다
  - 위의 세가지 계층은 독립적으로 분리할 수 있도록 구현해야 하며, 일반적으로 각 계층 사이에서는 인터페이스를 이용하여 통신하는 것이 일반적이다.

 

 

계층 역할
프리젠테이션 계층 브라우저상의 웹클라이언트의 요청 및 응답을 처리
상위계층(서비스 계층, 데이터 액세스계층)에서 발생하는 Exception에 대한 처리
- 최종 UI에서 표현해야 할 도메인 모델을 사용
- 최종 UI에서 입력한 데이터에 대한 유효성 검증 기능을 제공
- 비즈니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능을 제공
- @Controller 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 속
서비스 계층 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성
검증
- 트랜잭션처리
- 프리젠테이션 계층과 데이터 액세스 계층 사이를 연결하는 역할로서 두 계층
이 직접적으로 통신하지 않게 하여 애플리케이션의 유연성을 증가
- 다른 계층들과 통신하기 위한 인터페이스를 제공
- Service 인터페이스와 @Service 어노테이션을 사용하여 작성된 Service 구현
클래스가 이 계층에 속함
데이터 액세스 계층

- 영구 저장소(관계형 데이터베이스)의 데이터를 조작하는 데이터 액세스 로직을 객체화
- 영구 저장소의 데이터를 조회, 등록, 수정, 삭제함
- ORM(Object RElational Mapping) 프레임워크 (MyBatis, Hibernate)를 주로 사용하는 계층 
- DAO 인터페이스와 @Repository 어노테이션을 사용하여 작성된 DAO 구현 클래스가 이 계층에 속함

 

클래스의 역할

 

프리젠테이션 계층

UserController 클래스

: UI 계층과 서비스 계층을 연결하는 역할을 하는 클래스

  - JSP에서 UserController를 통해서 서비스 계층의 UserService를 사용하게 된다.

  - 서비스 계층의 UserService 인터페이스를 구현하나 객체를 IoC 컨테이너가 주입해준다.

 

서비스 계층

UserService 인터페이스

: 서비스 계층에 속한 상위 인터페이스

 

UserServiceImpl 클래스

: UserService 인터페이스를 구현한 클래스

  - 복잡한 업무 로직이 있을 경우에는 이 클래스에서 업무 로직을 구현하면 된다.

  - 데이터 액세스 계층의 UserDao 인터페이스를 구현한 객체를 IoC 컨테이너가 주입해준다.

 

데이터 액세스 계층

UserDao 인터페이스

: 데이터 액세스 계층에 속한 상위 인터페이스

 

UserDaoImplJDBC 클래스

: UserDao 인터페이스를 구현한 클래스로 이 클래스에서는 데이터 액세스 로직을 구현하면 된다.

  - SpringJDBC를 사용하는 경우에는 DataSource를 IoC 컨테이너가 주입해준다.

  - MyBatis를 사용하는 경우에는 SqlSession을 IoC컨테이너가 주입해준다.

 

 

 

 

 

 

 

 

반응형

'2019백업' 카테고리의 다른 글

CMD UTF-8 한글깨짐 문제  (0) 2019.06.27
스프링 에러 해결  (0) 2019.06.26
따라해볼만한 블로그 예제  (0) 2019.06.26
9) 모델의 사이클  (0) 2019.06.26
8) Session에 넣어 전달하기  (0) 2019.06.26