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에 노출하면 레이어 분리는 산산조각난다.
'【Java】' 카테고리의 다른 글
| try-with-resources (0) | 2026.03.18 |
|---|---|
| throw new NotFoundShortenUrlException() 분해 (0) | 2026.03.17 |
| CompletableFuture() 비동기 작업을 다루는 도구 설명서 (0) | 2026.03.16 |
| Object .toString() (0) | 2025.08.27 |
| [JAVA] whlie문 밖에 또는 안에 무한루프의 궤도 (1) | 2025.08.19 |