ENN
ResponseEntity vs DTO 본문
둘 다 controller에서 view를 사용하지 않고 정보를 json등의 형태로 return해주기 위해 쓰인다는 것이 공통점이다. 그렇다면 둘은 어떻게 다르며, 각각의 장단점은 무엇일까?
1. ResponseEntity
ResponseEntity란?
- ResponseEntity는 HttpEntity를 상속받는다. 이때 HttpEntity는 HTTP 메세지의 헤더, 바디 정보를 담고 있다. 따라서 ResponseEntity를 사용하면 응답시에 HTTP 상태 코드를 설정할 수 있다.
- 다음과 같이 쓰일 수 있다.
public ResponseEntity(HttpStatus status) {
this(null, null, status);
}
public ResponseEntity(@Nullable T body, HttpStatus status) {
this(body, null, status);
}
ResponseEntity의 장점
1. return에서 어떤 값이 나오는지 분명하게 파악할 수 있다.
2. HttpStatus를 넣을 수 있다. 따라서 api형태로 사용할 때 무엇때문에 에러가 났는지 파악하기 용이할 수 있다.
ResponseEntity의 단점
1. 2번 장점이 번거로워 단점이 될 수도 있다.
2. DTO
DTO란?
- Data Transfer Object의 약자.
- 계층 간 데이터 교환을 위해 사용되는 '객체'이다.
- 데이터를 담아가는 그릇같은 역할을 한다.
- 내부에 getter & setter 외의 로직을 가지지 않는 순수한 데이터 객체이다.
- DTO외에 DAO와 VO를 따로 사용하기도 한다.(절대적인 룰은 아니다.)
- 아래 코드는 BookmarkDTO를 따로 정의해서 사용한 경우이다.
@GetMapping
public BookmarkDTO find(final Long bookmarkId) {
return bookmarkService.find(bookmarkId);
}
DTO의 장점
1. 엔티티 내부 구현의 캡슐화가 가능하다.
2. UI 화면에서 사용하는 데이터만 선택적으로 보낼 수 있다. (그래서 계층간 데이터 교환을 위한 객체인 것이다.)
DTO의 단점
1. 많은 데이터를 DTO에 맵핑시켜줘야 한다.
2. 나중엔 DTO가 너무 많아진다..
'백엔드' 카테고리의 다른 글
Springboot 환경에서 SQL 연동하기 (0) | 2022.09.13 |
---|---|
Docker compose를 이용한 Spring Boot, Mysql 배포 (0) | 2022.09.13 |
Java Optional의 개념 및 사용법 (0) | 2022.09.11 |
Spring 예외 처리 : HandlerExceptionResolver (0) | 2022.09.02 |
HTTP 메서드와 멱등성(idempotent) (0) | 2022.09.02 |