twocowsong

JPA - hibernate.dialect (데이터베이스 방언) 본문

IT/JPA

JPA - hibernate.dialect (데이터베이스 방언)

WsCode 2022. 4. 26. 21:10

persistence.xml에서 데이터베이스 방언을 설정하기위해 사용하는 hibernate.dialect값이있습니다.

 

JPA는 특정 DB에 종속되지 않은 기술입니다.

따라서 다른 DB로 손쉽게 교체할 수 있습니다.

그런데 각 DB가 제공하는 SQL문법과 함수가 조금씩 다르다는 문제가 있습니다.

 

예를들면 다음과 같은 차이점이 있습니다

 

데이터 타입 : 가변 문자 타입으로 MySql은 Varchar, 오라클은 Varcahr2를 사용합니다.

 

다른 함수명 : 문자열을 자르는 함수로 SQL표준은 SUBSTRING()을 사용하지만 오라클은 SUBSTR()을 사용합니다.

 

페이징 처리 : MySql은 LIMIT를 사용하지만 오라클은 ROWNUM을 사용합니다.

 

이처럼 SQL 표준을 지키지 않거나 특정 DB고유한 기능을 JAP에서는 방언이라 합니다.

애플리케이션 개발자가 특정 DB에 종속되는 기능을 많이 사용하면 나중에 DB를 교체하기가 어렵습니다.

대부분 JPA구현체들은 이런 문제를 해결하고자 DB방언 클래스를 제공합니다.

 

JPA가 제공하는 표준 문법에 맞추어 JPA를 사용하면 되고, 특정 DB에 의존적인 SQL은 DB방언이 처리해줍니다.

따라서 DB가 변경되어도 애플리케이션 코드를 변경할 필요 없이 데이터 베이스 방언만 교체하면됩니다.

 

하이버 네이트는 다양한 DB방언을 제공합니다. 

H2 : org.hibernate.dialect.H2Dialect
오라클 10g : org.hibernate.dialect.Oracle10gDialect
MySql : org.hibernate.dialect.MySQL5Dialect

'IT > JPA' 카테고리의 다른 글

JPA - hibernate.dialect (트랜잭션)  (0) 2022.04.28
JPA - 엔티티 매니저  (0) 2022.04.27
JPA persistence.xml  (0) 2022.04.26
JPA - @Entity, @Table, @Id, @Column  (0) 2022.04.25
JPA란 무엇인가?  (0) 2022.04.24