DTO 란 계층간 데이터 교환을 목적으로 하는 객체이다.
https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html 사진참조
1. 오직 데이터 교환을 위한 로직만을 갖는다. 즉 비즈니스 로직 같은 다른 로직을 갖지 않는다.
-> 객체지향설계 원칙 단일책임의 원칙에 의해서 DTO라는 객체의 기능은 계층간 데이터 교환을 위한 로직만이 있어야지 , 비즈니스로직 같은 다른로직이 구현되면 안된다.
2. DTO 객체는 불변객체로 만들자!
위 코드에서 final 키워드를 선언하지 않고 getter/setter를 통하여 구현 할 수 도 있겠지만, DTO 객체를 불변객체로 만들기 위해 생성자를 통한 초기화 로직을 구현하였다.
왜냐하면 Setter 메소드를 통해 데이터를 가변적으로 설정 할 수 있게 되면 DTO객체가 전달되는 과정속에서 데이터 변조가 일어날 수 있기 때문이다.
[전달 과정중 데이터 무결성 보장]