DTO

김성수·2022년 11월 17일
0

스프링 및 부트

목록 보기
5/9

DTO

  • Data Tranfer Object의 준말
  • @RequestParam을 써서 요청 정보들을 받았는데, 요청이 많으면 많을수록 컨트롤러에서 @RequestParam 애너테이션을 계속 사용해서 요청정보들을 받아야 할 것이다. 차라리 하나의 객체로 전달을 받으면 더욱 간결해질 것인데, 지금 언급한 하나의 객체의 역할을 하는 것이 바로 DTO이다.

각 DTO 클래스는 멤버 변수에 해당하는 getter메서드가 반드시 있어야 한다.

역할

DTO는 API계층에서 클라이언트의 RequestBody를 전달받고, 클라이언트에게 되돌려 줄 응답데이터를 담는 역할을 한다.

전달받긴하는데, JSON으로 들어온 요청을 Mapper에 의해서 JSON데이터를 DTO형태로 바꿔준다.

Mapper는 참고로 Reflection API를 사용해서 데이터를 변환해준다.

직렬화

  • JSON 직렬화(Serialization): Java 객체 → JSON
  • JSON 역직렬화(Deserialization): JSON → Java 객체

POST 실험을 했는데, 분명히 잘 들어가야 되는데, 안되더라.. 이유가 뭐지하고 보다가, PostDto 클래스의 Generate시에 당연히 나는 getter를 클릭했는데, 보니깐 반환타입은 void였고, void는.. Setter를 클릭한 거였다... Getter로 바꾸니 Post 잘 된다.

위의 에러메세지중 representation이란 단어가 나오는데, 저기가 스프링의 정석에서 클라이언트의 요청을 받는 계층이라고 했다. 즉, API계층이란 말이다.
여튼, 요청을 제대로 못 받는 걸 알았고, postDto를 가보니;;; Setter로 되있었다니.... !!...!!^&^ 여튼..그렇다 그래서 바로 Getter로 다시 바꾸니 되었다...

애플리케이션 실행과 post요청 잘 들어간 것들이다...

확인을

잘하자...

유효성 검증 의존라이브러리 추가

build.gradle 파일의 dependencies탭에

implementation 'org.springframework.boot:spring-boot-starter-validation'

위 코드를 추가한다.

유효성 검증시 애너테이션 구현

유효성 검증에 필요한 애너테이션을 만들 수도 있다.

  1. 일반 애너테이션 만들듯이 애너테이션 설정들을 하고
  2. @Constraint(validatedBy = {~~Validator.class}) 를 설정해준다.
  3. 2번에서 validatedBy 쪽에 들어가는 *.class 를 ConstraintValidator 인터페이스를 이용해서 구현해준다.
profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

1개의 댓글

comment-user-thumbnail
2022년 11월 22일

커밋ㅇ

답글 달기