인프런 커뮤니티 질문&답변
vo 활용에 대해 궁금합니다.
작성
·
829
0
안녕하세요, 선생님.
조금 덜 중요한 질문일 수 있습니다.
이전에 vo를 사용해서 application.yml에 있는 데이터를 받아와 사용했는데 이게 사실 dto랑 구분되어 사용되는기준이 명확하지 않은 것 같더라구요.(누구는 이럴때 dto, 누구는 vo.. 등등)
보통 어떤 경우에 dto를 사용하고, 어떤 경우에 vo를 사용하나요? dao도 있던데.. 그건 또 어떤 경우에 사용하는지 궁금합니다.
간단한 경험 예시를 들면 저는 예전에 vo마다 검증을 하고 사용할 땐 Controller에서 dto로 변환해서 사용했는데 주변에서 왜 그렇게 사용하냐고 하더라구요.. 구분 개념이 잘 안 잡히는 것 같습니다.
답변 1
4
안녕하세요, 이도원입니다.
DAO, VO, DTO 이러한 부분은 디자인 패턴에서 사용되는 개념입니다.
먼저 VO와 DTO는 사용하는 용도에 맞춰 설계하시면 될 것 같습니다. 사용자로부터 어떤 요청 데이터(Request Body)를 전달받았을 때, 그 데이터는 온전하게 백엔드에서 사용하는 경우도 있고, 중간 부분에 다른 형태로 변경해서 사용해야 하는 경우도 있습니다. 서비스나 레이어 간에 데이터가 이동될 때는 해당하는 단계에 맞도록 DTO를 전달하는 것이 효율적일 수 있습니다. 불필요한 데이터를 전달할 경우, 불필요하게 데이터가 공개되는 경우도 있기 때문에, 사용 목적에 받도록 데이터의 포맷을 정의하는게 필요하다고 생각됩니다. 그리고, VO 같은 경우에도 사용자에게 데이터를 반환(Response Body)할 때, 백엔드에서 처리된 데이터를 그대로 노출하는 것보다는 필요한 부분만 공개하는 것이 좋을 수 있습니다.
정리해 보면, VO(Value Object)는 데이터를 상태를 저장하여 전달하는 용도로, DTO(Data Transfer Object)는 데이터를 이용하기 위한 용도로, DAO(Data Access Object)는 VO, DTO하고는 약간 다른 객체이며, 영속적인 데이터 처리를 위한 부분을 담당하는 객체로 이해하시면 좋을 것 같습니다.
감사합니다.






감사합니다.!