DTO
→ 각 클래스 및 인터페이스를 호출하면서 전달하는 매개변수로 사용되는 데이터 객체
- Entity를 Controller 같은 클라이언트단과 직접 마주하는 계층에 직접 전달하는
대신 DTO를 사용해 데이터를 교환
*DTO는 계층간 데이터 교환이 이루어 질 수 있도록 하는 객체이기 때문에 특별한 로직을 가지지 않는 순수한 데이터 객체여야 한다.
또한, DB에서 꺼낸 값을 DTO에서 임의로 조작할 필요가 없기 때문에 DTO는 Setter를 만들 필요가 없고, 생성자를 이용한다.
->생성자도 사용하지 않고 Entity처럼 Builder패턴을 통해 값을 할당해도 ok
Entity와 DTO
- DTO는 Entity와 달리 각 계층끼리 주고 받는 데이터 ⇒ 목적 자체가 전달이므로 읽고 쓰는것이 가능하고 일회성으로 사용되는 성격이 강함
- Entity 값이 변하면 Repository 클래스의 Entity Manager의 flush가 호출 될 때 DB에 값이 반영되고, 다른 로직들에도 영향을 미치기 때문에 DTO와 Entity를 분리해주어야함