🌱 SPRING/JPA

[JPA] Dialect(방언)

1HOON 2020. 6. 6. 18:01

세상엔 많은 데이터베이스 제품이 존재하고, 각각의 제품은 표준 SQL(ANSI SQL)을 제외한 독자적인 기능을 위한 SQL도 존재한다.

 

  • SQL Server : ANSI SQL + T-SQL
  • Oracle : ANSI SQL + PL/SQL
  • 기타 등등...

 

그리고 각각의 데이터베이스에서 제공하는 문법과 함수가 차이가 있다.

 

  • 가변문자 : VARCHAR(MySQL), VARCHAR2(Oracle), NVARCHAR(SQL Server)
  • 문자열 자르는 함수 : SUBSTRING(표준 SQL), SUBSTR(Oracle)
  • 페이징 : LIMIT(MySQL), ROWNUM(Oracle)

 

이러한 차이를 방언(Dialect)라고 하며, JPA에서는 추상화된 방언 클래스를 제공한다. JPA를 사용하지 않으면 애플리케이션의 DBMS가 변경될 경우 혹은 같은 애플리케이션을 다른 DBMS에서 동작시켜야하는 경우 기존에 작성된 SQL을 모두 수정해야하지만, JPA를 사용하면 이 Dialect 덕분에 그러한 시간과 비용을 아낄 수 있다.

 

 

DBMS별 hibernate Dialect 설정 방법은 persistence.xml 파일에서 hibernate.dialect 설정 값을 변경해주면 된다.

 

  • H2 : org.hibernate.dialect.H2Dialect
  • Oracle 10g : org.hibernate.dialect.Oralce10gDialect
  • MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
  • MariaDB : org.hibernate.dialect.MariaDBDialect

 


출처 :: 인프런 강의(자바 ORM 표준 JPA 프로그래밍 - 기본편)

반응형