Web/JAVA
[JAVA] DTO, VO 그리고 Entity의 차이
부에나온다
2022. 8. 10. 16:02
프로젝트를 하다보니 DTO, VO를 혼용해서 사용하는 경우가 있는거같아 이번경우에 정리를 해둘려고한다.
1. DTO(Data Transfer Object)
- 계층간의 데이터 교환을 위해 사용하는 객체
- 데이터 교환만을 위해 사용하므로, 로직은 사용하지않고 getter/setter 메소드만 갖는다.
- 로직은 없고, 데이터를 꺼내고, 담는 메소드만 담는다.
2. VO(Value Object)
- VO는 값 그 자체를 표현하는 객체이다.
- 로직을 포함할 수 있으며, 객체의 불변성(객체의 정보가 변하지않음) 보장해야한다.
- VO에는 Object객체 인 equals() 와 hashCode()를 오버라이딩 해야한다.
- getter메소드만 가지고 있을 수 있다.
3. Entity
- JPA ORM 을 사용할 경우 적용되며, 실제 DB의 테이블과 매핑되는 객체이다.
- @id를 통해 각각의 Entity를 구분한다.
- 마찬가지로 로직을 포함할 수 있다.