데이터베이스 dialect

진조던·2022년 7월 13일

Database

목록 보기
1/3

글 작성 이유

JPA 프로젝트 생성 시 작성하는 설정 정보를 관리하는 파일인 persistence.xml 파일의 필수 속성인 hibernate.dialect에 대한 호기심

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             version="2.2">
             
    <!-- 보통 db 당 하나의 이름을 지정 -->
    <persistence-unit name="hello">
        <properties>
            <!-- 필수 속성 -->
            ...
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
    </persistence-unit>
</persistence>
  • JPA는 특정 데이터베이스에 종속되지 않는다.
  • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 차이가 있다. 예를 들어 MySQL은 VARCHAR, Oracle은 VARCHAR2
  • 데이터 타입, 페이징 처리, 함수명 등이 조금씩 다름
  • 즉, SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 표현(기능)

JPA: 아 너는 H2 데이터베이스의 방언을 쓸 생각이구나. 내가 번역해줄게.

다른 데이터베이스 방언을 쓰려면 hibernate.dialect 프로퍼티 값을 바꿔준다.

  • MySQL
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
  • Oracle
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>

하이버네이트는 40가지 이상의 데이터베이스 방언을 지원한다.
코드를 들여다보면 방언이 매핑되어 있는데 커스텀해서 사용할 수도 있다!

0개의 댓글