티스토리 뷰

반응형

 

 

 

Dialect(방언)이란?


Dialect 방언에 대해 알아보기전 기본 SQL을 이해 해야 합니다.

SQL은 표준 ANCI SQL이 있고 DBMS Vendor(공급업체)인 MS-SQL, Oracle, My-SQL, Postgre SQL에서 제공하는 SQL이 존재합니다. MS-SQL은 T-SQL, Oracle은 PL/SQL이 대표적입니다.
ANSI SQL은 모든 DBMS에서 공통적으로 사용이 가능한 표준 SQL이지만 DBMS에서 만든 SQL은 자신들만의 독자적인 기능을 추가 하기 위해 만든 것으로 사용하는 DBMS에서만 사용이 가능합니다.

이해를 돕기 위해 예를 들면 MYSQL에서는 ID 값을 증가 시키기 위해 Auto Increment를 사용할 수 있지만 Oracle에서는 이 기능을 제공하지 않고 Sequence를 사용하여 기능을 제공합니다. 동일한 기능을 제공하지만 서로 다르게 제공하는 것이죠. 이는 같은 DBMS라도 버전에 따라 달라질 수 있습니다.


Dialect (방언)


JPA는 기본적으로 어플리케이션에서 직접 JDBC 레벨의 SQL을 작성하지 않고 JPA가 직접 SQL을 작성하고 실행합니다. 그런데 DBMS 종류마다 사용하는 SQL이 다르다는 것을 우리는 앞에서 알아봤습니다. JPA가 해당 DBMS에 맞춰 SQL을 생성해야하는데 어떤 종류인지 알지 못한다면 문제가 발생 할 수 있습니다.
그래서 JPA에 어떤 DBMS를 사용하는 알려주는 방법이 방언을 설정하는 방법입니다. JPA에 Dialect를 설정할 수 있는 추상화 방언 클래스를 제공하고 설정된 방언으로 각 DBMS에 맞는 구현체를 제공합니다.

그래서 만약, MariaDB로 개발을 진행하면 Dialect에 MariaDB로 설정해 놓다가 어플리케이션을 설치할때 DBMS가 Oracle 이라면 Dialect을 Oralce로 설정하면 문제 없이 어플리케이션을 구동 할 수 있습니다.

MariaDB 10.3 버전 사용시

database-platform: org.hibernate.dialect.MariaDB103Dialect


Oracle 11g 버전 사용시

database-platform: org.hibernate.dialect.Oracle10gDialect

 

하이버네이트 Dialect 설정과 종류

 

Spring Boot에서 Dialect를 설정은 아래와 같이 할 수 있습니다.

spring:
  jpa:
    hibernate:
    database-platform: org.hibernate.dialect.MariaDB103Dialect

 

Spring Boot의 Dialect를 설정하기 위해서 hibernate 버전을 먼저 확인하는 것이 필요합니다.

Spring Boot의 버전마다 사용하는 hibernate 버전이 다르기 때문에 아래와 같이 확인하세요.


Spring-Boot 2.1 버전에서는 hibernate 5.3.X 버전을 사용합니다.
https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/html/appendix-dependency-versions.html

Appendix F. Dependency versions

Appendix F. Dependency versions The following table provides details of all of the dependency versions that are provided by Spring Boot in its CLI (Command Line Interface), Maven dependency management, and Gradle plugin. When you declare a dependency on

docs.spring.io


Spring-Boot 2.2 버전부터는 hibernate 5.4.6.Final을 사용합니다.
https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/appendix-dependency-versions.html

Dependency versions

The following table provides details of all of the dependency versions that are provided by Spring Boot in its CLI (Command Line Interface), Maven dependency management, and Gradle plugin. When you declare a dependency on one of these artifacts without dec

docs.spring.io


Spring-Boot 2.1을 사용한다면 방언은 아래를 참고하시면 됩니다.
https://docs.jboss.org/hibernate/orm/5.3/javadocs/org/hibernate/dialect/package-summary.html

org.hibernate.dialect (Hibernate JavaDocs)

Enum Summary  Enum Description Database List all supported relational database systems. ResultColumnReferenceStrategy Defines how we need to reference columns in the group-by, having, and order-by clauses. Package org.hibernate.dialect Description This pa

docs.jboss.org


Spring-Boot 2.2을 사용하신다면 아래를 참고하시면 됩니다.
https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/dialect/package-summary.html

org.hibernate.dialect (Hibernate JavaDocs)

Enum Summary  Enum Description Database List all supported relational database systems. ResultColumnReferenceStrategy Defines how we need to reference columns in the group-by, having, and order-by clauses. Package org.hibernate.dialect Description This pa

docs.jboss.org


TIP : Oracle 11g의 경우에는 Oracle 10g를 사용하면 됩니다.

반응형
댓글