JAP는 특정 데이터베이스에 종속적이지 않은 기술이므로, 개발시 어느 데이터베이스를 사용하던지 손쉽게 교체 할 수 있고, 사용함에 있어서 이상이 없어야 한다. 일반적으로 각각의 데이터베이스는 문법과 함수가 다른데, 예를 들어서 아래와 같다.

 

- 데이터 타입 : 가변문자 타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2를 사용한다.

- 다른 함수명 : 문자열을 자르는 함수로 예를 들면 SQL 표준은 SUBSTRING() 이지만, 오라클은 SUBSTR()을 사용한다.

- 페이징 처리 : MySQL 은 LIMIT를 사용하지만 오라클은 ROWNUM을 사용한다.

 

이와같이 SQL별로 표준을 지키지 않은 데이터베이스만의 고유한 기능을 '데이터베이스 방언' 이라고 한다. JAP 구현체는 이러한 문제점을 해결하기 위하여 데이터베이스 방언 클래스를 제공한다. JPA를 사용하고있는 프로젝트의 개발자는 이에 대하여 사용하는 데이터베이스가 변경되더라도 데이터베이스 방언만 교체하면 쉽게 데이터베이스를 변경할 수 있다.

 

 

데이터베이스 방언을 사용하는 예

 

하이버네이트에는 다양한 데이터베이스 방언을 제공한다. 대표적으로 아래와 같다.

- H2: org.hibernate.dialect.H2Dealect

- 오라클 10g : org.hibernate.dialect.Oracle10gDialect

- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect

 

 

 

● 참고

하이버네이트가 지원하는 여러 데이터베이스 방언 항목들

http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects

 

HIBERNATE - Relational Persistence for Idiomatic Java

Sometimes, you probably don't want to implement an intrusive interface, maybe due to portable concern, which is fine and Hibernate will take care of this internally with a wrapper class which implements that interface, and also an internal cache that maps

docs.jboss.org

 

'develop > JPA, Hibernate' 카테고리의 다른 글

엔티티 매니저 등록/수정/삭제/조회 정리  (0) 2019.11.24
엔티티 매니저 설정, 생성과정  (0) 2019.11.24
JPQL 이란? (querydsl)  (0) 2019.10.12
Hibernate 란?  (0) 2019.09.30
JPA, ORM이란 무엇인가?  (0) 2019.09.30

+ Recent posts