본문 바로가기
Develop/Spring

고민 | 새로고침 마다 데이터가 중첩 저장된다..?

by Hoya324 2023. 8. 17.
새로고침을 할 때마다 Json으로 받아오는 데이터가 db에 쌓이는 문제가 발생했다..
이 글은 이를 해결해보는 과정을 기록한 글입니다.

문제 상황

InitController

이전에는 GET 방식으로 홈페이지에 들어가는 동시에 DataManager가 Json 데이터를 파싱하여 db에 저장하는 방식으로 진행되었다.

이런식으로 데이터가 저장되다보니 데이터가 중첩되어 저장되는 상황이 일어났다.

일이 벌어지고 나서야 알아채다니..

처음
1회 새로고침 후

 

어떻게 해결하면 좋을까

어떤 객체를 사용할 때마다 데이터가 중복되어 저장되면 안 되기 때문에 코드에서 딱 한번 실행될 부분을 생각해야한다.

 

가장 좋은 방법은 객체의 생성 시점에 데이터를 함께 생성하는 것이 좋겠다는 생각이 들었다.

 

때문에 InitService가 생성될 때 데이터를 생성하도록 코드를 변경해주었다.

 

해결 코드

InitService 생성자

이런 식으로 InitService가 생성되는 시점에 dataManager를 이용하여 데이터를 저장해주었다.

 

사실 시도조차 하지 말아야할 실수이지만, 가벼운 고민이더라도 조금씩 기록하고 고민해보자는 의미에서 글로 남겼다.

 

조회시점에 db에 DISTINCT를 sql문에 추가하여 중복을 제거하고 조회하는 것은 근본적인 해결이 되지 않기 때문에 하지 않았다.