DTO(Data Transfer Object)
란 데이터 전송을 위해 생성되는 객체를 의미합니다.
객체 지향 언어(OPP) 환경에서 DTO를 사용할 수 있습니다.
"리팩토링" 의 저자 마틴 파울러는 다음과 같이 DTO를 정의 했습니다.
When you're working with a remote interface, such as Remote Facade (388), each call to it is expensive. As a result you need to reduce the number of calls, and that means that you need to transfer more data with each call. One way to do this is to use lots of parameters. However, this is often awkward to program - indeed, it's often impossible with languages such as Java that return only a single value.
The solution is to create a Data Transfer Object that can hold all the data for the call. It needs to be serializable to go across the connection. Usually an assembler is used on the server side to transfer data between the DTO and any domain objects.
해석하자면, 외부와 통신하는 프로그램에게 호출은 큰 비용이며, 호출의 횟수를 줄여 효율적으로 값을 전달할 필요가 있다. 이를 위해 데이터를 한곳에 모아 전달하는 방법이 있으며 이를 DTO
클래스라고 한다.
즉, DTO는 데이터베이스의 데이터를 한 클래스에 모아 저장할 수 있으며, 이는 일일이 데이터를 호출하지 않아도 되기 때문에 코드의 효율성이 증가한다는 뜻이다.
OPP 환경에선 호출을 활용하여 데이터를 조회 할 수 있습니다. 하지만 이때 주의 하지 않으면 불필요하며 숨겨야 하는 민감한 데이터가 노출 될 수 있습니다.
회원의 전화번호 정보를 데이터베이스에서 조회를 해야할 경우가 있다고 가정해 봅시다. 이때 해당 데이터만 제공이 되어야 합니다. 하지만 데이터베이스에 저장된 다른 주민등록번호, 집주소까지 제공할 필요는 없습니다. 이때 DTO는 클래스이므로 캡슐화를 활용하여 민감한 데이터를 보호할 수 있도록 도와줍니다.
https://martinfowler.com/eaaCatalog/dataTransferObject.html
https://www.okta.com/kr/identity-101/dto/