본문 바로가기

Database/JPA

[JPA] 데이터베이스 방언, Dialet

반응형

 

JPA는 특정 데이터베이스에 종속적이지 않은 기술이다.

따라서 다른 데이터베이스로 손쉽게 교체할 수 있다.

그런데 각 데이터베이스가 제공하는 SQL 문법과 함수가 조금씩 다르다는 문제점이 있다.

 

예시 )
데이터 타입 : 가변 문자 타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2
다른 함수명 : 문자열을 자르는 함수로 SQL 표준은 SUBSTRING(), 오라클은 SUBSTR()
페이징 처리 : MySQL은 LIMIT 사용, 오라클은 ROWNUM

이렇듯 SQL 표준을 지키지 않거나, 특정 데이터베이스만의 고유한 기능을 JPA서는 방언(Dialet)이라 한다.

따라서 개발자가 특정 데이터베이스에 종속되는 기능을 많이 사용하면 나중에 데이터베이스를 교체하기가 어렵다.

 

그러나 하이버네이트를 초함한 대부분의 JPA 구현체들은 이런 문제를 해결하기 위해 다양한 데이터베이스 방언 클래스를 제공한다.

따라서 개발자는 JPA가 제공하는 표준 문법에 맞춰 JPA를 사용하면 되고,

특정 데이터베이스에 의존적인 SQL은 데이터베이스 방언이 처리해준다.

JPA Dialet 종류

H2 : org.hibernate.dialect.H2Dialect

Oracle 10g : org.hibernate.dialect.Oracle10gDialect

MySQL : org.hibernate.dialect.MySQL5InnoDBDialect

Hibernate 전용 속성

hibernate.show_sql : 하이버네이트가 실행한 SQL을 출력

hibernate.format_sql : 하이버네이트가 실행한 SQL을 출력할때 보기 쉽게 정렬

hibernate.use_sql_comments : 쿼리를 출력할때 주석도 함께 출력

hibernate.id.new_generator_mappings : JPA 표준에 맞춘 새로운 키 생성 전략을 사용

 


[참고]

Hibernate API : https://docs.jboss.org/hibernate/orm/current/javadocs/

Hibernate User Guid : https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html

반응형

❥ CHATI Github