Skip to content

H2 데이터베이스에 native query 적용 문제

giantim edited this page Aug 11, 2020 · 1 revision

문제점

Hashtagmap 프로젝트에서 가게 정보를 수집해 데이터베이스에 저장할 때 데이터베이스에 이미 있는 가게의 정보는 새로 저장이 아닌 업데이트 하는 기능이 필요하다.

우리는 MariaDB를 사용하기 때문에 현재 이 기능을 MySql의 insert into ~ on duplicate key update ~ 쿼리를 이용해서 구현하였다.

해당 native query의 문제점은 MySql에 종속적인 쿼리문이라는 것이다.

동일한 쿼리문이 만약 Oracle 데이터베이스에 사용한다면 merge into 로 바뀔 것이고 PostgreSQL 데이터베이스에 사용한다면 insert into ~ on conflict ~ do update 쿼리로 바뀔 것이다.

H2 데이터베이스를 이용해 로컬 환경에서 테스트를 할 때 우리가 작성한 MySql용 쿼리를 H2 데이터베이스는 이해하지 못한다.

해결방법

H2 데이터베이스의 mode를 MySql로 지정해서 MySql의 종속적인 쿼리문을 이해하도록 설정해준다.

우리 프로젝트에 적용할 데이터베이스의 설정은 hashtagmap-secret/core/application-db.yml에서 바꾸어준다.

image

Clone this wiki locally