Wookim

Spring DTO class의 특정 컬럼이 매핑 되지 않는 문제 본문

programming language/Java

Spring DTO class의 특정 컬럼이 매핑 되지 않는 문제

개발자인 경우 2021. 5. 3. 15:06

업무 중 lombok 관련 문제가 발생했다.

 

현상은 다음과 같다.

 

 

front -> back

  1. 프론트에서 data를 json 형태로 post 요청
  2. 백앤드에서 해당 데이터를 @RequestBody SomeDataDTO 로 받음
  3. 스프링이 해당 데이터를 자동으로 파싱하면서 dto에 데이터가 매핑되어야 함
  4. 대부분 잘 매핑이 되었으나 특정 멤버(객체)만 매핑이 되지 않는 문제 발생
  5. 특정 멤버(객체)의 공통점은 sData, bData 와 같은 객체명의 형태임을 확인

back -> DB

  1. back 에서 db에 넣을 데이터 dto 클래스에 매핑
  2. 쿼리 실행
  3. 특정 컬럼만 들어가지 않거나 null 관련 예외가 발생함
  4. 해당 컬럼들의 공통점은 sData, bData와 같은 형태임을 확인

 


 

원인 분석

위와 같은 현상의 원인은 대부분 lombok 문제이다.

필자는 dto 클래스에 lombok 애너테이션을 사용하고 있었다. (getter, setter)

 

헌데....

 

위 처럼 객체명이 맨 앞의 알파벳이 소문자 하나만오고 바로 대문자가 오는 형태는 

롬복에서 파싱에러가 발생한다고 한다.

 

이를 해결하는 방법으로 

SData, BData 형식으로 변경을 하거나

strData, bitData 형태로 변경을 해야한다.

 

필자는 후자로 변경을 했다.

특히 DB 테이블의 컬럼명 기반으로 DTO나 builder 클래스의 멤버명이 결정 되기에

컬럼명을 위처럼 짓지 않는게 더 좋아보인다.

 

 

 

Comments