DTO = Data Transfer Object = 데이터 전송 객체
특징 = 데이터를 전송하기 위해 사용하는 객체라서 그 안에 비즈니스 로직 같은 복잡한 코드는 없고 순수하게 전달하고 싶은 데이터만 담겨있습니다.

https://blog.scottlogic.com/2020/01/03/rethinking-the-java-dto.html
공통 DTO를 사용한다면 해당 API를 호출하게 위해서 어떤 데이터를 전송해야하는지 명확하지 않을 것 이고 어떤 데이터를 받게 될지도 명확하지 않을 수있다.
각 API가 서로 다른 요구사항을 충족시키기 위해 필요로 하는 데이터 구조가 다를 수 있기 때문입니다.
이는 데이터의 무결성을 보장하고 불필요한 데이터 전송을 최소화하여 어플리케이션의 성능을 향상시킬 수 있습니다. 또한, 클라이언트와 서비스간의 계약을 명확하게 정의하여 API 스펙이 변경되어도 영햘을 최소화 할 수 있는 이점이 있습니다.
장점
1. 불필요한 데이터 전송을 최소화 가능
2.주고 받는 데이터가 명확하니 프론트 엔드와 협업하기 유용하다.
3. 변경에도 영향을 최소화할 수 있다.
4. 각 API 요구사항을 효율적으로 충적시킬 수 있다.
단점
1. 복잡성 증대
단점에 대한 극복법
상속을 최대한 활용해서 복잡성을 낮춘다.
Mapper 라이브러리를 사용해준다.