[Spring] hibernate.dialect 오류

원모어깨찰빵·2024년 1월 19일

트러블 슈팅

목록 보기
3/7
post-thumbnail

개발한 애플리케이션을 실행하던중 다음과 같은 오류문구를 발견하였다.

An attempt was made to call a method that does not exist. The attempt was made from the following location:
    org.hibernate.dialect.MySQL57Dialect.<init>(MySQL57Dialect.java:34)

찾아보니, 내가 사용하는 DBMS에 맞는 Dialect를 지정해주지 않아서 생긴 오류다.
따라서 이번에는 내가 사용하는 spring boot의 버전과 hibernate의 버전, 그리고 사용해야 하는 dialect의 버전을 찾아보고자 한다.

Dialect란?

JPA는 사용자가 직접 쿼리문을 작성하지 않고 JPA가 대신 쿼리를 작성하게끔 하는데, 각 DBMS마다 사용하는 SQL이 다르기 때문에(문법의 차이) 각 DBMS마다 Dialect(방언)이 존재합니다.
Dialect는 DBMS의 종류마다 다르고, 한 DBMS에서도 버전마다 달라질 수 있습니다.
따라서, Spring Boot의 버전마다 사용하는 hibernate 버전 확인이 필요합니다.

hibernate 버전 확인

먼저 spring.io에 접속하여 사용중인 spring boot버전의 Reference doc -> Dependency Versions에 들어갑니다.
https://spring.io/projects/spring-boot/#learn
그러면 아래와 같이 hibernate의 버전을 확인할 수 있습니다.

이로써 제가 사용중인 스프링부트 3.2.1에서는 hibernate 6.4.1버전을 사용함을 알 수 있습니다.

dialect버전 찾기
먼저 hibernate의 공식 문서에 접속합니다.
https://docs.jboss.org/hibernate/orm/

이제 사용중인 버전/dialect/dialect.html로 들어가보면, 아래와 같이 사용해야 할 dialect버전이 나옵니다.

저는 mysql을 사용중이므로, MySQL8Dialect를 사용하면 됨을 알 수 있습니다.

application.yml 작성

yml파일에 제가 사용하고자 하는 dialect버전을 작성해주시면 됩니다.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

작성 후 실행하여 보니, 오류가 해결되었습니다.

profile
https://fuzzy-hose-356.notion.site/1ee34212ee2d42bdbb3c4a258a672612

0개의 댓글