개요
데이터를 전달용 오브젝트
Why to use
서버 - 클라이언트간 객체를 전달할 때 메소드 콜(주로 데이터 가공)을 줄이기 위해
View 는 보통 변경이 잦은데, 이때 Entity 를 받아선 DB Schema 영향에 직격타다.
따라서 DTO를 별도로 정의해서 전달하는게 국룰이다.
When to use
서로 다른 많은 오브젝트가 존재하고, 프레젠테이션 모델이 한번에 그 데이터를 전달하려 할 때
DTO를 통해 도메인으로부터 클라이언트가 필요한 데이터만 전달할 수 있게함.
Where to place?
주로 서비스 레이어 -> 컨트롤러 객체로 DTO를 전달한다.
역방향(컨트롤러 -> 서비스)의 경우에는 VO (불변객체) 를 사용한다.
개발자마다 다르지만DTO는 서비스 패키지, VO는 컨트롤러 패키지에 담는 경우가 있다.
이는 주로 해당 객체를 사용하는 레이어에 가까이 위치시킨다는 철학을 담은 방식이다.
나는 그냥 별도의 vo, dto 패키지를 만들어 사용한다.
How to use
- DTO는 getter 만 갖는다.
Java 14 부터 도입된 `record` 키워드를 적극 활용하여 불변객체로 만드는 것이 좋다. - 서비스를 통해 DTO 생성 메소드를 호출하여 컨트롤러로 전달하는 것이 일반적이다.
'JVM > Java' 카테고리의 다른 글
[Java] SpringBoot 없이 Yaml config 로드하기 (feat.SnakeYaml) (0) | 2023.09.15 |
---|---|
Presentation - Business DTO를 분리시켜라 (0) | 2023.08.06 |
[JAVA] JDK 11 'var' Type Inference (0) | 2020.11.03 |
[Java] 입출력 스트림 (0) | 2020.04.03 |
자바 정규식을 활용한 패스워드 정책설정 예제 (0) | 2019.06.01 |