[Spring] Entity 작성 시 Lombok사용 주의사항

AlBan·2021년 8월 13일
0

Spring

목록 보기
10/13
post-thumbnail

리액트를 공부하고 있는 요즘 최근 진행하였던 프로젝트의 jQuery 부분을 리액트로 변경하면서 리액트에 대한 이해도와 함께 숙련도를 올리고자 개인적으로 토이프로젝트를 진행하였다.

빈껍데기 데이터

Spring Boot를 이용해 간단한 백엔드 서버를 만들고 테스트를 하던 중 데이터가 제대로 넘어오지 않는 상황이 발생하였다.

정확히는 서버는 정상응답이라고 데이터를 넘겼으나 내부를 보니 아무런 데이터가 없었다.

위와 같이 데이터의 갯수는 맞게 넘어오는데 **내용이 텅텅 빈 채**로 넘어왔다.
처음엔 DB와의 커넥션 문제인가 싶어 컨테이너도 다시 띄우고, DB 내용도 다시 작성하는 등 별 짓을 다 하였으나 해결이 되지 않았다. 그렇게 골머리를 썩히던 중, 어이없는 곳에서 문제를 해결할 수 있었다.

우연한 해결

문제의 원인은, 엔티티 선언부의 @Getter 어노테이션의 부재가 문제였었다.

이번 문제의 원흉, @Getter 어노테이션이 존재하지 않는다
필자는 반복되는 코드의 양을 줄이고자 많이들 사용하는 Lombok 라이브러리를 통해 엔티티 객체의 생성 등을 관리한다. Lombok 라이브러리를 접한 이후의 모든 프로젝트에서 해당 라이브러리를 사용하고 있었고, 특히 객체의 생성 및 값 할당에는 무결성을 지키고자 `@Builder`를 주로 사용하여 객체의 생성과 값 할당을 처리하고 있었다. 그래서 이를 작성할 때 `@Getter` 어노테이션을 실수로 빼먹은것이 아닌가 싶다.

@Getter 적용 후 정상적으로 담겨 전달되는 데이터

원인 분석

필자의 짧은 지식으로 문제의 원인을 유추해보자면, 데이터는 정상적으로 가져왔으나. private으로 선언된 필드로 인해, 이를 매핑해주는 jackson이 엔티티 필드의 데이터에 접근할 수 없어, 매핑이 완료되었다고 판단하여 빈 껍데기만 전달해준게 아닌가 싶다.

정리

문제의 원인을 더 정확히 알아보기 위해 jackson에 대한 정리가 필요할 것 같다. 더해서 Spring이 관리하고 있는 객체의 정보를 넘겨주기 위해서는 개발자 스스로 Mapper를 생성하여 넘겨주지 않는 이상, Getter 메서드는 꼭 작성하는 코드를 작성할 수 있도록 해야겠다.

정말 간단한 문제였고, 사소한 실수로 인해 발생한 문제였지만 이를 해결하기 위해 2시간 가량이 걸렸던걸 생각하면 다시는 겪고싶지 않은 문제다.

profile
[Spring, React를 공부하는 끈질긴 개발자 지망생] 잊어버리지 않도록! 정리 또 정리!

0개의 댓글