< 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 |