H2 데이터베이스에 native query 적용 문제 - woowacourse-teams/2020-songpa-people GitHub Wiki
문제점
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
에서 바꾸어준다.