일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- PHP
- programmers
- AWS
- Xcode
- jQuery
- amazon
- 자료불러오기
- CodeIgniter
- Gradle
- 2차원 객체배열
- 옵셔널
- SWiFT
- 제어문
- EC2
- DatePicker
- CKEditor4
- switch-case
- Spring
- 사용법
- guard
- bootstrap
- 객체
- 상속
- 함수
- class
- 차이점
- 클래스
- 전의 의존성
- pagination
- Java
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
'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 |
Comments