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를 구분한다.

    - 마찬가지로 로직을 포함할 수 있다.