Entity와 관련된 코드들은 많은데 비해 DTO의 경우는 상대적으로 적습니다.
그런 상황에서 Entity는 변경될 가능성이 DTO에 비해 상대적으로 적습니다.
만약 Entity를 Request,Response에 사용하게 되면 변경가능성이 높아지고 동시에 같이 변경되는 코드들이 늘어나기 때문에 코드 유지보수를 생각하였을때 Entity와 Dto를 분리해야합니다.
간혹 DTO는 setter가 필요하고, Entity는 setter가 없어야 하기 때문이라고 착각할 수 있는데 DTO에 setter가 없어도 값이 잘들어옵니다.
JOSN 타입이 아닌 경우에는 Query Parameter를 사용할 때가 있는데 이 때는 Jackson2HttpMessageConverter
가 아닌 Spring WebDataBinder
를 사용합니다. 이는 기본적으로 JavaBean
방식을 쓰는데 이때는 setter가 필요합니다.
@AllArgsConstructor
를 이용할 수도 있습니다.