Error: Sqlite3 와 Hibernate 연동 문제

2023. 11. 18. 21:40·🪲 bugs

발생 상황

간단한 토이 프로젝트 세팅 중, DB를 무엇으로 쓸 지 정해지지 않은 상태에서 가볍게 SQLite를 써보자고 하는 중이었는데요.

(SQLite는 단일 파일 DB로서 h2와 경량화된 데이터베이스이며 인메모리로 활성화할 수 있다는 공통점이 있습니다. 학습의 용도로 SQLite를 시도해보기로했어요.)

 

SQLite와 Spring JPA가 연동되지 않는 문제가 있었습니다.

 

  • 당시 yml
spring:
  datasource:
    driver-class-name: org.sqlite.JDBC
    url: jdbc:sqlite:sqlite-sample.db
  jpa:
    database-platform: org.hibernate.community.dialect.SQLiteDialect
  • 에러메시지
org.hibernate.HibernateException: Unable to determine Dialect for SQLite 3.43 (please set 'hibernate.dialect' or register a Dialect resolver)
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:202) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:86) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$1.execute(JdbcEnvironmentInitiator.java:358) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$1.execute(JdbcEnvironmentInitiator.java:280) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.jdbc.WorkExecutor.executeReturningWork(WorkExecutor.java:56) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.jdbc.AbstractReturningWork.accept(AbstractReturningWork.java:34) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:70) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:279) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:193) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:69) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:119) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:264) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:239) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:216) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.boot.model.relational.Database.<init>(Database.java:45) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:231) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:199) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:169) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1383) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1454) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]

 

발생 원인

JPA와 DB가 연동 되려면 Dialect가 필요한데 기존에 지원하던 SQLite용 Dialect가 Hibernate 6 에서는 더이상 지원하지 않았기 때문입니다.

👉 Dialect 패키지에 대한 참고링크 : https://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/dialect/package-summary.html

 

org.hibernate.dialect (Hibernate JavaDocs)

Package org.hibernate.dialect Description This package abstracts the SQL dialect of the underlying database. A concrete Dialect may be specifed using hibernate.dialect.

docs.jboss.org

 

 

대처

hibernate-community-dialects 의존성을 build.gradle 에 추가해주었습니다.

    implementation 'org.xerial:sqlite-jdbc:3.43.2.2'
    implementation('org.hibernate.orm:hibernate-community-dialects:6.1.7.Final') // 이부분을 추가해 주었습니다.
  • The hibernate-community-dialects module comes with a SQLite dialect: hibernate-orm/SQLiteDialect.java at main · hibernate/hibernate-orm · GitHub 124 

 


Refs.

  • https://discourse.hibernate.org/t/sqlite-not-working-with-hibernate-6-2/8174/2 
  • https://github.com/gwenn/sqlite-dialect
  • https://discourse.hibernate.org/t/how-to-integrate-sqlite-with-spring-boot-having-hiberate-6/7538
  • https://calcite.apache.org/javadocAggregate/org/apache/calcite/sql/SqlDialect.html

 

저작자표시 비영리 동일조건 (새창열림)
'🪲 bugs' 카테고리의 다른 글
  • 멀티 모듈을 설정하며 겪었던 예외들...(feat. Gradle, Springboot)
  • Error: Permission to {repository} denied to github-actions[bot]
  • Error: Springboot ArgumentResolver를 거치지 않는 예외
  • Error: Springboot 3.0이상에서 QueryDSL 설정
iirin
iirin
별건 없고요, 조금씩 했던 것을 쌓아가고 있습니다. 이 블로그는 호기심과 재미로 추동됩니다 🚀
  • iirin
    ✨ iirin's space
    iirin
  • 전체
    오늘
    어제
    • ALL
      • 👩🏻‍💻 Computer Science
      • 💻 Operating System
      • ⚡️ Network
      • ☁️ Infra
      • 🥞 Database
      • 👽 Languages
        • ☕️ Java
        • ✔ Kotlin
      • ⚙️ Frameworks
        • 🌱 Spring
      • 🧩 Algorithm
      • 🪲 bugs
      • 💪 Practice
      • 💬 Smalltalk
      • 🔧 Tools
  • 블로그 메뉴

    • 링크

      • github
      • github page
    • 공지사항

    • 인기 글

    • 태그

      mysql
      Java
      log
      원격SSH
      회고
      Error
      coroutine
      알고리즘
      주간회고
      진법
      redis
      spring
      SpringBoot
      BUG
      top-interview-150
      cs
      주소바인딩
      leetcode
      OS
      secondhand
      운영체제
      test_container
      JPA
      진법연산
      Algorithm
      test
      cache
      논리적주소
      Kotlin
      참조투명성
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    iirin
    Error: Sqlite3 와 Hibernate 연동 문제
    상단으로

    티스토리툴바