일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- class
- 함수
- Xcode
- amazon
- switch-case
- 사용법
- 객체
- bootstrap
- 상속
- 클래스
- programmers
- 제어문
- pagination
- guard
- Java
- AWS
- 2차원 객체배열
- EC2
- PHP
- Gradle
- jQuery
- DatePicker
- Spring
- 전의 의존성
- 차이점
- CKEditor4
- 옵셔널
- CodeIgniter
- 자료불러오기
- SWiFT
Archives
- Today
- Total
not bad 한 개발
[Spring] DTO, VO, Entity 특징 및 차이점 본문
DTO, VO, Entity는 Spring 공부하면서 많이 봐왔지만 각각 어떤기능과 특징을 가지고 있는지 지식을 정리하는 차원에서 이렇게 정리해본다.
DTO (Data Transfer Object)
- 데이터를 전달하기위한 객체이다.
- getter / setter가 존재하기 때문에 객체의 값을 읽거나 쓰는 기능이 있다.
- controller, service, repository 모든 부분에서 쓰일 수 있다.
- DTO는 보통 가변객체로 사용하지만 상황 따라 불변객체로 사용이 가능하다.
- 가변DTO는 비즈니스 로직을 포함을 안하고 불변DTO는 비즈니스 로직이 포함 가능하다.
VO (Value Object)
- VO는 순수히 값을 읽기 용도만 가능한 객체이다.
- DTO와 다른점이 있다면 setter가 없다.
- controller, service, repository 모든 부분에서 쓰일 수 있다.
- 명시적으로는 VO는 값을 넣을 수 없다고는 하지만 VO에도 값을 넣을 수는 있다.
- 비즈니스 로직 포함이 가능하다.
Entity
- 실제 DB Table과 매핑이 되는 객체이다.
- Entity를 선언하면 실행 할 때 Entity에 작성한대로 테이블이 자동으로 생성되고, 컬럼이 변경되기도 한다.
- 주로 service, repository에서 많이 사용된다.
- 사용할 때 주의할 점은 Entity를 데이터를 입력할 때 사용하면 안된다.
- 객체안에 비즈니스 로직을 포함이 가능하고 setter를 포함할 수도 있다.
VO, DTO, Entity를 간단하게 정리하면 아래의 표로 표현할 수 있을 것이다.
설명 | getter / setter 여부 | 비즈니스 로직 포함 여부 | |
가변 DTO (Data Transfer Object) | 데이터를 읽기 혹은 쓰기를 위한 객체 | getter / setter 모두 가능 | 비즈니스 로직 포함이 필요없다. |
불변 DTO (Data Transfer Object) | 데이터를 읽기만을 위한 객체 | getter만 가능 | 비즈니스 로직 포함이가능하다. |
VO (Value Object) | 데이터를 읽기만을 위한 객체 | getter만 가능 | 비즈니스 로직 포함이가능하다. |
Entity | 데이터베이스의 테이블과 매핑되는 객체 | getter / setter 모두 가능 | 비즈니스 로직 포함이가능하다. |
참고 게시글
https://ccomccomhan.tistory.com/35
[JAVA] - DAO, DTO, VO, Entity 간단하고 쉽게 이해하기
👨🏻🏫 간단정리 DAO : Database에 접근하는 역할을 하는 객체. DTO : 데이터를 전달하기 위한 객체 VO : 값 자체를 표현하는 객체. Entity : 실제 DB 테이블과 매핑이 되는 클래스. 👀 자세한 내용은
ccomccomhan.tistory.com
'Web > Spring' 카테고리의 다른 글
[Spring] DAO , Repository에 대하여 (2) | 2024.10.27 |
---|---|
[Spring] API 개발 및 연구 - 초기 세팅 선정 이유 (0) | 2024.10.25 |
[Spring] API 개발 및 연구 - 초기 세팅 (2024.09.28) (2) | 2024.10.25 |
[Spring] Gradle Dependency 설정 (0) | 2024.10.25 |
[Spring] Gradle이란? (2) | 2024.10.25 |