본문 바로가기
  • Adillete
【Java】

entity vs domain vs dto

by 아딜렛 2026. 3. 20.

entity: DB를 위한 객체 DB에 1:1 매칭을 한다. db 구조가 바뀌면 entity도 바뀐다.

 

domain: 비즈니스 로직을 위한 객체

 

dto : 외부와 데이터를 주고받기 위해 존재한다.

번외 dto 내부에 생성자가 필요한이유: 
서비스에서 도메인객체를 dto로 변환할때 도메인 객체를 받아서 필드를 채우는 생성자가 필요하고
생성자가 없으면 dto가 어떤값으로 초기화되어야하는지 컴파일러가 알수 없다.

 

mapper: entity vs domain  vs dto로 분리 되어있어서 변환하는 코드가 사용됨

 

왜 Domain을 Controller로 넘기면 안되는지? 

클라이언트한테 감춰야하는 데이터가 그대로 정보 노출된다.

도메인이 API 스펙에 종속된다.

양방형 의존성 문제로 도메인 변경이 곧 api 변경이 된다. 

 

분리를 해야하는 이유

1. 변경의 이유가 다르기 떄문이다.

2. Mapper는 분리를 유지하는 접착제이다.

3. Domain을 Controller에 노출하면 레이어 분리는 산산조각난다.