Post

VO,DAO,DTO,Entity

Entity 란?

Entity 클래스는 실제 DataBase의 테이블과 1 : 1로 매핑되는 클래스로,

DB의 테이블내에 존재하는 컬럼만을 속성(필드)으로 가져야 합니다.

Entity 클래스는 상속을 받거나 구현체여서는 안되며, 테이블내에 존재하지 않는 컬럼을 가져서도 안됩니다.

DTO (Data Transfer Object)

DTO(Data Transfer Object)는 데이터 전송(이동) 객체라는 의미를 가지고 있습니다.

DTO는 주로 비동기 처리를 할 때 사용합니다.

DTO는 각 계층(Layer)간 데이터 교환을 위한 객체(Java Beans)입니다.

(ex. View <-(DTO) -> Controller <- (DTO) -> Service )

로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메소드만을 갖습니다.

Entity, DTO 클래스를 분리하는 이유

Entity와 DTO를 분리해서 관리해야 하는 이유는 DB 와 View 사이의 역할을 철저히 분리하기 위해서 입니다.

Entity 클래스는 실제 테이블과 매핑되어 만일 변경되게 된다면 다른 클래스에 영향을 끼치고,

DTO 클래스는 View와 통신하며 자주 변경되므로 분리 해주어야 합니다.(Entity 클래스 보호)

DTO는 Domain Model의 순수성을 지키기 위해 DTO는 Domain Model 객체를 그대로 두고 복사하여 다양한 Presentation Logic을 추가한 정도로 사용합니다

VO (Value Object)

VO(Value Object)는 말 그대로 값 오브젝트로써 값을 위해 쓰입니다.

VO는 변하지 않는 데이터 객체를 의미합니다.오직 read만 가능하며 getter만 가능해야 합니다.

객체의 불변성(객체의 정보가 변경되지 않음)을 보장합니다. 즉, 값을 설정한 뒤에는 수정할 수 없습니다.

equals()와 hashCode()를 재정의(Override) 해서 각 객체의 동일성을 판별할 수 있습니다.

DTO와 VO의 차이점

DTO는 데이터의 전송만을 위한 객체이고, VO는 특정한 비즈니스 로직을 가질 수 있습니다.

DTO는 데이터 전달만을 목적으로 하고, VO는 객체 자체를 어떠한 값(Value)으로서 사용합니다.

(외부 시스템과 데이터 통신을 할 경우 DTO로, DB에서 가져오는 Data는 VO로 정의 후 사용)

DTO는 목적 자체가 데이터의 전달이므로, 읽고 쓰는 것이 모두 가능해 가변성을 갖고, VO는 불변성 및 read-only의 속성을 갖습니다.

DAO Data Access Object)

Database에 접근하는 역할을 하는 객체입니다.

프로젝트의 서비스 모델에 해당하는 부분과 데이터베이스를 연결하는 역할입니다.

Service와 DB를 연결하는 역할을 하며, 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다.

🤓

DAO :  Database에 접근하는 역할을 하는 객체

DTO : 데이터를 전달하기 위한 객체

VO : 값 자체를 표현하는 객체

Entity : 실제 DB 테이블과 매핑이 되는 클래스

This post is licensed under CC BY 4.0 by the author.