Back-End/SPRING
목적에 따른 객체 구분(DTO, VO, ENTITY)
R루안
2024. 7. 20. 16:57
개발을 하면서 맨날 헷갈렸던 부분을 개인적인 생각으로 정리를 해볼려고 합니다.
DTO(Data Transfer Object) : 데이터 전송 객체로써 프로세스간에 데이터를 전달하는 객체
VO(Value Object) : 고유한 식별자가 없는 객체
Entity : 데이터베이스 테이블과 1:1로 매핑되는 객체
차이점 요약
1. DTO(Data Transfer Object) : 데이터 전달용
> 계층간 데이터 전달을 위해 사용한다.
> 필드값이 같아도 같은 객체로 판단 X
> 가변 가능 객체(setter 사용가능)
> getter/setter이외의 로직 사용 불가
2. VO(Value Object) : 속성 대신 사용, 가끔 데이터 전달
> 도메인에서 속성들을 묶어서 특정값을 나타낼 때 사용.
> '값'을 표현하기 위해 사용한다.
> 필드값이 같으면 같은 객체로 판단.
> 불변객체(setter 사용안함)
> 로직 사용 가능
> 불변값이기 때문에 DTO 대신 데이터전달을 위해 사용하기도 함
3. Entity : 데이터 베이스 객체
> 데이터 베이스 테이블과 직접 매칭
> 데이터베이스와의 CRUD 연산을 담당
> 주로 JPA나 Hibernate와 함께 사용한다.
프로젝트에서의 활용법
- 주소나 불변객체의 경우 Vo로 만들어서 Dto, Entity 안에 속성으로 처리하고 API 결과 반환은 DTO 객체, 데이터베이스 조회 객체는 Entitiy를 사용하면 될 것 같다.
개인적인 생각을 정리한 내용이라 틀린 내용이있으면 댓글 달아주시면 감사하겠습니다.