본문 바로가기

JAVA

Entity , Dto 차이점 개념


Entity란?


실제 DB의 테이블과 매칭 될 클래스(*테이블과 링크된다는 의미)

@Entity, @Column, @Id 등으로 이용한다.

 


최대한 외부에서 Entity클래스의 Getter Method를 사요하지 않도록 해당 클래스 안에서 필요한 Logic Method를 구현한다!

◇ 단, Domain Logic 만 가지고있어야 하고 Presentation Logic을 가지고 있어서는 안된다.

◇ 여기서 구현 한 Method는 주로 ServiceLayer에서 이용된다.


Qustion;

◆ Entity Class와 DTO를 나누는 이유는??

◇ View Layer와 DB Layer의 역할을 철저하게 분리하기 위해서 ! (각각의 Layer에 집중을 하기위해서?)

 

테이블과 매핑되는 Entity클래스가 변경되면 여러클래스에 영향을 끼치게되는 반면 View와 통신하는 DTO클래스(Request/ Response클래스)는 자주 변경되므로 분리해야한다.

 

Domain Model을 아무리 잘 설게했다고 해도 각 View내에서 Domain Model의 Getter만을 이용해서 원하는 정보를 표시하기가 어려운 경우가 종종 있다, 이런경우 Domain Model내에 Presentation을 위한 필드나 로직을 추가하게 되는데 이러한 방식이 모델의 순수성을 깨고 Domain Model객체를 망가트리게 된다.

 

★Anwser;

DTO는 Domain Model을 복사한 형태로, 다양한 Presentation Logic을 추가한 정도로사용하며 Domain Model의 객체는 Persistent만을 위해서 사용한다.

 

#사용 예시

 

 


DTO (Data transfer Object)란?


계층간 데이터 교환을 위한 객체(Java Bean)이다.

     DB에서 데이터를 얻어 Service 나 Controller등으로 보낼때 사용하는 객체를 말한다.

     즉,, DB의 데이터가 Presentation Logic Tier로 넘어오게 될 때는 DTO의 모습으로 바뀌어서 오고 가는것!

     *로직을 갖고있지않는 순수한 데이터 객체이며, Getter/Setter메소드만 남는다.

 

Request 와 Response용 DTO는 View를 위한 클래스! 

     변경이 필요한 클래스 

     Presentation Model 

     *Controller에서 Response DTO형태로 Client에 전달한다.

     toEntity() 메소드를 통해서 DTO에서 필요한 부분을 이용해 Entity로 만든다.

 

VO(value Object)

     VO는DTO는 동일한 개념이지만 readonly속성을 가진다.

     VO는 특정한 비즈니스 값을 담는 객체이고 DTO는 Layer간의 통신 용도로 오고가는 객체를 말한다.

 

출처 : https://coder-in-war.tistory.com/704#comment16951002 

반응형