rhanziy

Spring - 계층 구조 본문

Java

Spring - 계층 구조

rhanziy 2023. 4. 25. 14:38

 

대부분의 기능 구현 작업순서는

VO, DTO(도메인 모델 계층) -> Mapper(퍼시스턴스 계층) -> Service(비즈니스 계층) -> Controller(제어 계층) -> JSP(프리젠테이션 계층) 순으로 작업된다.

 

 

 

 

도메인 모델 계층

  •  도메인 모델은 각 계층간의 전달 되어야 할 정보를 담는 객체 입니다.
  •  해당 객체에 담긴 데이터들은 캡슐화해서 보관됩니다. ( 데이터의 접근자 private / getter,setter를 통해 데이터 접근)

퍼시스턴트 계층 

  •  DAO 계층이라고도 불립니다. 
  •  DB 질의를 통해서 데이터 러치를 담당하는 객체입니다.

비즈니스 계층

  •  핵심 업무 로직의 구현과 그에 관련된 데이터의 적합성 검증 외에도 다양한 부가적인 구현을 수행합니다.(ex. 트랜잭션 처 리, 다른 계층들간 통신을 위한 인터페이스 제공, 해당 계층의 객체들간의 관계를 관리 등..)
  •  퍼시스턴트 계층과 제어 계층을 연결 하는 역할을 합니다.

제어 계층

  •  사용자로부터 요청을 받고 응답을 처리하는 계층입니다. 
  •  전체 시스템의 설정 상태를 유지합니다.
  •  사용자의 요청을 검증하고 필요시 비즈니스 계층에 필요 로직을 요청 후, 전달 받은 응답을 적절한 뷰에 연결합니다.

프리젠테이션 계층

  •  사용자와 애플리케이션 간 인터페이스 역할을 합니다. 
  •  사용자가 선택할 수 있는 기능이 표시되어 있어야 하며, 요청에 필요한 부가적 정보 전달을 위한 입력양식이 있어야 합니다.
  •  애플리케이션으로부터 전달 받은 데이터를 효과적으로 보여주기 위한 로직이 포함 됩니다.

 

 


DAO

  • DAO(Data Access Object) 는 데이터베이스의 data에 접근하기 위한 객체입니다. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다.

DTO

  • DTO(Data Transfer Object) 는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)입니다.
  • 유저가 입력한 데이터를 DB에 넣는 과정을 보겠습니다.
    • 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송합니다.
    • 해당 DTO를 받은 서버가 DAO를 이용하여 데이터베이스로 데이터를 집어넣습니다.

VO

  • VO(Value Object) 값 오브젝트로써 값을 위해 쓰입니다. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다.
  • DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있습니다.

 

 

DTO와 VO 차이점

 

DTO는 인스턴스 개념이고 VO는 리터럴 값 개념이다.

 

VO는 값들에 대해 Read-Only를 보장해줘야 존재의 신뢰성이 확보되지만 DTO의 경우는 단지 데이터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐이다.

 

값 자체에 의미가 있는 VO 전달될 데이터를 보존해야하는 DTO의 특성상 개념이 다르다.

'Java' 카테고리의 다른 글

Spring - @ModelAttribute (feat. @RequestParam)  (0) 2023.05.26
SQL - 페이징 기능 구현 쿼리  (0) 2023.04.27
Spring - Spring Interceptor 실습  (0) 2023.04.21
Spring - Spring Interceptor 스프링 인터셉터  (0) 2023.04.21
SQL - 쿼리 분석  (0) 2023.04.18
Comments