반응형
이 글은 Spring boot 3.1.5 버전을 사용하며 작성했다. 결론은 3.1.5 버전 기준으로는 MODE만 설정하면 된다. dialect는 필요 없다.
상황
테스트 환경용 H2 데이터베이스에서 MySQL로 dialect를 설정할 때 아래와 같은 에러가 발생했다.
spring:
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL;
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
접근
내가 설정한 dialect를 사용하지 못하는 상황이였다. 어떤 dialect를 사용해야 하는지 알기 위해서 hibernate의 docs를 찾아봤다. https://docs.jboss.org/hibernate/orm/6.4/javadocs/org/hibernate/dialect/MySQLDialect.html 에서 확인해보니 MySQLDialect의 subclass로 MariaDBDialect, MySQL56SpatialDialect, MySQL5SpatialDialect, MySQL8Dialect, MySQLSpatialDialect, TiDBDialect 클래스가 있었다. 그래서 가장 최신 버전으로 보이는 MySQL8Dialect를 적용해서 다시 실행했다.
해결
실행 결과, 아래와 같은 경고 메세지가 출력됐다. 읽어보니 MySQL8Dialect가 더 이상 사용되지 않으며 Spring boot가 자동으로 설정하니 설정을 지우라는 얘기였다.
2023-12-01T20:09:15.843+09:00 WARN 82641 --- [ restartedMain] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2023-12-01T20:09:15.843+09:00 WARN 82641 --- [ restartedMain] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead
시키는대로 설정을 지웠더니 실행된다. Spring boot와 hibernate 몇 버전부터 이렇게 된 건지는 찾아보지 않았지만 다른 예제들은 dialect를 설정하고 있었으니 낮은 버전에선 잘 실행되는 것 같다.
반응형
'Tool > Spring' 카테고리의 다른 글
[Spring boot] Service layer 테스트 코드 작성하기 (0) | 2023.12.04 |
---|---|
[Spring boot] Dto 유효성 검사 테스트 코드 작성하기 (0) | 2023.12.03 |
[Spring boot] JUnit5 테스트 코드 작성하기 (0) | 2023.12.01 |
[Spring, DB] @ManyToMany를 지양하는 이유 (2) | 2023.11.24 |
[Spring Security] Spring Security 사용자 인증 정보 접근하기 (0) | 2023.11.21 |