Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

ENN

ResponseEntity vs DTO 본문

백엔드

ResponseEntity vs DTO

ParkIsComing 2022. 9. 11. 17:22

둘 다 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가 너무 많아진다..