[WEB] MVC - Model ( VO, DTO, DAO )

728x90

 

  • VO ( Value Obejct ) ( 읽기 전용 목적 )

      :   값을 위한 클래스 - ‘getter'를 통해 사용. Read-Only ( 불변 )

  • 실제 DB의 테이블과 매칭 될 클래스 ( 테이블과 링크될 클래스임을 나타냄 )
  • Entity 클래스 또는 가장 Core한 클래스라고 부름
  • @Entity, @Column, @Id 등을 이용

 

  • DTO ( Data Transfer Object ) ( 데이터 수집 목적이 강함 )

     :  로직을 가지지 않는 순수 데이터 객체 - 'getter' & 'setter'. ( 가변 )
     :  계층 간 데이터 교환을 위한 Data Beans. ( Controller / View / business / persistent( DB ) Layer )

  • 계층 간 데이터 교환을 위한 객체 ( Java Beans )
    -  DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용
    -  DB의 데이터가 Presentation Logic Tier로 넘어오게 될 때는 DTO의 모습으로 바껴서 오고가는 것
    -  로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖는다.
    -  하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO 클래스에는 setter가 없고
         대신 생성자에서 값을 할당
  • Request와 Response용 DTO는 View를 위한 클래스
    -  자주 변경이 필요한 클래스
    -  Presentation Model
    -  toEntity() 메서드를 통해 DTO에서 필요한 부분을 이용하여 Entity로 만듦
    -  Controller Layer에서 Response DTO 형태로 Client에 전달
  • VO ( Value Oject ) vs DTO
    -  VO는 DTO와 동일한 개념이지만 read-only 속성을 가짐
    -  VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오고가는 객체

 

  • DAO ( Data Access Object )  ( mapper )

      :   DB의 데이터에 접근하기 위한 로직이 있는 객체 ( 비즈니스 로직과 분리하기 위해 )

  • 실제로 DB에 접근하는 객체 ( Persistence Layer - DB에 data를 CRUD하는 계층 )
    -  Service와 DB를 연결하는 고리 역할
    -  SQL 사용( 개발자가 직접 코딩 ) 하여 DB에 접근한 후 적절한 CRUD API 제공
     ( JPA( Java Persistence API ) 대부분의 기본적인 CRUD method 제공 )

 

 

반응형

'웹 개발 ( Web Development ) > 백엔드 ( Back-end )' 카테고리의 다른 글

[WEB] HTTP  (0) 2021.07.06
[WEB] URL & URI  (0) 2021.07.05
[WEB] MVC pattern  (0) 2021.05.12
[MyBatis] SQL insert 시 주 키 리턴하기  (0) 2021.05.11
[JDBC] SQL & Java Type Matching  (0) 2021.05.10