동네 반려견 탐색 기능을 위한 주소 저장


우리집에서 가까이 있는 반려동물을 탐색하는 기능을 구현하기 위해
kakao map api를 사용하여 주소를 저장해보기로 했다.

Kakao Map Api

내 애플리케이션 생성 후 승인키를 발급 받아 좌표로 주소를 변환하는 api에 헤더로 넘겨주면 된다.
내 애플리케이션에서 승인키 발급 뿐만 아니라 도메인과 IP 설정을 해줘야 api 사용이 가능하다.


좌표와 주소를 어떻게 저장할까

클라이언트에서 x, y 좌표를 받아 주소를 변환하는 것까지 테스트를 마치고
DB에 좌표를 저장하고 가까이 있는 반려동물을 조회해야 하는데
MySQL에 Point 타입으로 저장하고 조회할 수 있다는 사실을 알게 되었다.

다음과 같이 설정하여 공간 데이터 타입을 사용할 수 있으며
공간 데이터 타입을 활용하여 위치 데이터를 인덱싱할 수 있다.

<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>


spring:  
    jpa:  
        database-platform: org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect  


Point 타입은 다음과 같이 인덱스 생성이 가능하다.

CREATE SPATIAL INDEX [index_name] ON [table_name] ([index_column]);