spring

RequestDto, ResponseDto

kimkim615 2024. 7. 23. 23:30

< Request DTO를 사용하는 이유 >

1. @RequestParam으로 데이터를 일일이 받을 필요 없이 객체 하나로 한꺼번에 받을 수 있다.

2. Bean Validation, Contoller에서 검증 기능 분리 가능

3. 엔티티 내부를 캡슐화할 수 있다. (엔티티의 값이 변경되지 않도록 한다)

 

< Response DTO를 사용하는 이유 >

1. 넘겨줄 필요가 없는 데이터를 보내지 않을 수 있다. (화면에 꼭 필요한 데이터만 보내줄 수 있다)

2. 순환참조를 예방할 수 있다.

3. 엔티티 내부 캡슐화 가능 

 

Request DTO : getter, 기본생성자 필요
Response DTO : getter 필요

 

< 비유적인 표현 >

  • BoardRequestDto = 열쇠
  • BoardResponseDto = 금 Gold
  • Controller, Service 등... 각 계층 = 잠겨있는 방
  • Entity, DB = 금고

클라이언트가 금고(DB)에 접근해서 원하는 황금의 종류(원하는 각각의 데이터) 얻기 위해선

열쇠(requestDto)가 필요하다.
클라이언트가 금고에서 가지고 나오는 것은 원했던 황금(responseDto) 이다.

각 계층(Controller, Service 등...) 열쇠 or 황금에 아무런 영향을 미치지않고,
그저 각 열쇠를 자신이 다룰 수 있는 형태로 변환시켰을 뿐, '열쇠'가 가지는 기능(잠긴 방을 연다) 자체는 변하지 않았다.

 

 

출처

https://cobi-98.tistory.com/61

https://velog.io/@rmswjdtn/Spring-Response-Request-DTO-%EA%BD%89%EC%9E%A1%EA%B8%B0

https://velog.io/@baekgom/requestDto-responseDto-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4

'spring' 카테고리의 다른 글

Port 8080 was already in use. 에러 해결  (7) 2024.07.25
게시판 프로젝트- 2  (4) 2024.07.25
게시판 프로젝트  (0) 2024.07.18
entity와 domain, dto  (0) 2024.07.18
application.properties  (7) 2024.07.18