쌩로그

Mapper를 사용할 때 필드명을 바꿔주는 것이 좋다. 본문

Spring/Spring & Spring Boot

Mapper를 사용할 때 필드명을 바꿔주는 것이 좋다.

.쌩수. 2023. 6. 21. 01:34
반응형

목차.

  1. 개요
  2. 본론
      2-1. 어떤 문제였는가.
      2-2. Mapper의 역할
      2-3. 그래서 어떻게 해결했는가?
      2-4. 약간의 생각..
  3. 요약

1. 개요

아래 사진을 보면, CRUD기반 게시판을 HTTP의 POST메서드로 생성하는데,
필요한 정보를 서버로 보내면, 생성된 게시판은 ResponseDTO를 통해서 생성된 게시판의 데이터가 나오는데, 처음 생성하는 게시판임에도 불구하고, Id값이 null로 나왔다.

이를 해결한 간단한 내용의 포스팅이다.

2.본론

2-1. 어떤 문제였는가.

결론부터 말하면,
Entity로 사용하던 Board 클래스의 Id 필드
ResponseEntity에 담을 ResponseDTO(응답객체)의 Id의 필드의 이름이 달랐다.

이렇게 말이다..

2-2. Mapper의 역할

데이터 전송 객체(DTO)는 Data Transfer Object로써, 말 그대로 데이터를 전송하는 역할을 하는 객체이다.

클라이언트에서 서버로 요청을 보낼 때, 클라이언트로부터 온 데이터를 백엔드 서버에서 적절히 가공하여 응답해줄 때도 DTO를 사용하게 되는데,

요청시 보내온 데이터의 정보가 담겨있는 DTO백엔드 서버의 Entity 정보와 매핑시키거나,
혹은,
서버가 클라이언트로 응답(Response)을 줄 때, 백엔드 서버의 Entity 정보응답 데이터로 전송할 객체에 데이터를 매핑시켜주는 역할을 하는 것이 바로 Mapper의 역할이다.

현재 우리는 MapStruct 라이브러리의 @Mapper 애너테이션을 이용하여
Mapper 클래스를 사용하였고,
DTO와 Entity간의 필드들을 매핑하여 상황에 따라 적절한 데이터를 응답해줄 수 있도록 구현했다.

2-3. 그래서 어떻게 해결했는가?

지금 위의 사진들은 게시판에 해당하는 Board 클래스의 Entity의 Id 필드
게시판의 응답 객체인 ResposeDto의 Id 필드의 이름이 서로 달라서 발생한 문제였다.

그래서 위와 같이 바꿔주었고, 결과는 아래와 같이 잘 나온다!!

2-4. 약간의 생각..

방금 본 것처럼 Id가 지금 null로 나왔었는데, 사실은 이미 게시판은 생성된 상태이다.
하지만, 서로 매핑하는 필드명이 달랐기 때문에
매핑이 잘 이루어지지 않아 null로 처리되었지만,
사실은 이미 Entity는 생성된 상태이다!

3. 요약

Entity를 생성되었음에도 불구하고, Id값이 null이 나왔는데,
알고보니 ResponseDto와 Entity간의 필드명이 달라서 발생한 문제였고, 이를 맞춰주니
Id값이 null이 아니라, Entity와 제대로 매핑이 잘 되어 제대로 된 값으로 나왔다..!!

이후에 Mapper에 대해 조금 더 심도있게 공부해봐야겠다..

끝.

내가 성장하는 것이 다른 사람에게 좋은 영향을 줄 수 있다.

그래서 나는 잘 되야만 한다.

나는 진짜 ㄹㅇ 조만간 잘 될 사람이다.

어차피 잘 될 것이고, 지금도 잘 된 사람이다..

요즘 폭풍성장 중이다.

어쨋든간에 나는 어잘될사다.

728x90
Comments