동네 반려견 탐색 기능을 위한 주소 저장
우리집에서 가까이 있는 반려동물을 탐색하는 기능을 구현하기 위해
kakao map api를 사용하여 주소를 저장해보기로 했다.
Kakao Map Api
내 애플리케이션 생성 후 승인키를 발급 받아 좌표로 주소를 변환하는 api에 헤더로 넘겨주면 된다.
내 애플리케이션에서 승인키 발급 뿐만 아니라 도메인과 IP 설정을 해줘야 api 사용이 가능하다.
좌표와 주소를 어떻게 저장할까
클라이언트에서 x, y 좌표를 받아 주소를 변환하는 것까지 테스트를 마치고
DB에 좌표를 저장하고 가까이 있는 반려동물을 조회해야 하는데
MySQL에 Point
타입으로 저장하고 조회할 수 있다는 사실을 알게 되었다.
다음과 같이 설정하여 공간 데이터 타입을 사용할 수 있으며
공간 데이터 타입을 활용하여 위치 데이터를 인덱싱할 수 있다.
- pom.xml
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>${version}</version>
</dependency>
- application.yml
spring:
jpa:
database-platform: org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
- INDEX
Point
타입은 다음과 같이 인덱스 생성이 가능하다.
CREATE SPATIAL INDEX [index_name] ON [table_name] ([index_column]);