서론 (Introduction)

JPA를 사용하면 대표적인 구현체인 HIbernate를 사용하게 됩니다. HIbernate는 SQL 쿼리를 생성하주는 기능을 가지고 있는데, MySQL, Oracle 등 데이터베이스 마다 문법이 조금씩 다르기 때문에 Dialect(방언)을 설정해 주어야합니다. 이번 글에서는 Oracle 데이터베이스를 위한 Dialect 설정에 대해서 다루어보도록 하겠습니다.

 

본문 (Body)

a. org.hibernate.dialect

Hibernate에서는 데이터베이스 방언들을 org.hibernate.dialect 패키지에 정리하고 있습니다. 이 패키지의 내용은 hibernate 버전이 변경되면서 조금씩 바뀌어왔습니다. 여기에서는 이전 버전과 현재 버전의 dialect 적용에 대해서 알아보도록 하겠습니다.


B. 구버전의 Dialect

dialect 관련된 내용을 검색하면, 아래와 같이 데이터베이스 버전 별로 dialect를 설정하는 방법에 대한 질문이 많습니다. 답변을 보면 oracle 데이터베이스의 경우 버전 별로 Oracle10gDialect, Oracle12cDialect dialect를 설정하라고 하고 있습니다. 하지만 현재 hibernate 최근 버전(6.2.9-Final)에서는 이를 사용할 경우 에러가 발생합니다.


C. 최근 버전의 Dialect

최근 버전의 Dialect에서는 버전별로 각각의 Dialect를 사용하는 대신 통합된 Dialect를 사용하려는 경향을 보이고 있습니다. 따라서 이전에 사용된 버전별 Dialect는 Deprecated 처리되어 있는 것을 찾을 수 있습니다.

 따라서 OracleDialect를 사용하기 위해선 hibernate.dialect를 다음과 같이 설정해야합니다.

spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.OracleDialect

결론 (Conclusion)

평소에 개발하듯이 모르는게 생기면 구글링을 했는데, 이번에는 예전 버전을 기준으로 작성된 답변이나 블로그 글이 많아 개발을 하는데 많이 해매게 되었습니다. 역시 가장 확실한 건 직접 코드를 확인하는 것인 것 같습니다. 다른 분들은 저처럼 잘못된 답변으로 해매지말고 이 글로 명쾌하게 hibernate.dialect 를 설정할 수 있기를 바랍니다.

 

참조(Reference)

1. https://docs.jboss.org/hibernate/orm/6.3/userguide/html_single/Hibernate_User_Guide.html#database-dialect

+ Recent posts