728x90
프로젝트를 진행하면서 지역 검색 기능이 필요했다.
지역 선택 기능을 구현하기 위해 전국 시군구 데이터가 필요했고, 행정안전부 표준지역코드 API를 활용해 데이터를 저장했다.
최종적으로는 아래와 같은 형태의 데이터를 저장하는 것이 목표였다.
서울 강남구
서울 송파구
부산 해운대구
인천 연수구
경기 성남시
...
시군구 데이터만 추출
행정안전부 표준지역코드 API를 호출하면 다양한 행정구역 정보가 함께 전달된다.
응답 데이터에는 아래와 같은 정보가 포함되어 있었다.
서울특별시
서울특별시 강남구
서울특별시 강남구 역삼동
프로젝트에서는 시군구 목록만 사용하기 때문에 시도, 읍면동 등의 데이터는 제외하고 시군구 데이터만 저장하도록 필터링했다.
JPA로 데이터 저장
이번 프로젝트에서는 JPA를 사용해 지역 데이터를 저장했다.
API 응답 데이터를 Entity로 변환한 뒤 Repository를 통해 저장했다.
repository.save(region);
이미 저장된 지역 코드인지 확인한 뒤 저장하도록 처리해 중복 데이터가 쌓이지 않도록 했다.
// 이미 저장된 지역 코드라면 저장하지 않도록 처리
existsByRegionCode(regionCode);
화면에서 사용할 형태로 가공
공공데이터는 아래와 같은 형태로 제공되는데 화면에서는 조금 더 간단하게 보여주고 싶어서 저장하기 전에 displayName 값을 별도로 생성했다.
서울특별시 강남구 > 서울 강남구
이후 프런트에서는 별도의 가공 없이 바로 SelectBox 데이터로 사용할 수 있었다.
최종 결과
최종적으로 전국 시군구 데이터 268건을 저장했고, 저장된 데이터는 현재 지역 검색 기능에서 사용하고 있다.
공공데이터를 한 번 저장해 두니 이후에는 DB 조회만으로 데이터를 사용할 수 있어 관리도 훨씬 편해졌다.
느낀 점
공공데이터를 저장하는 것 자체는 어렵지 않았지만, 실제로는 필요한 데이터만 추출하고 화면에서 사용할 형태로 가공하는 과정이 더 중요했다.
이번 작업에서는 시군구 데이터만 저장하고, 별도의 displayName 값을 만들어 화면에서 바로 사용할 수 있도록 처리했다.
또한 JPA를 이용한 데이터 저장 방식도 함께 사용해 볼 수 있었다.
728x90
'JAVA > JPA' 카테고리의 다른 글
| MyBatis를 사용하다 JPA를 사용하며 느낀 차이 (0) | 2026.06.14 |
|---|