JPA Dialect

JPA Dialect

김영한님의 JPA와 Querydsl 강의를 듣고 정리 및 적용한 내용 추가

Dialect?

표준 SQL인 ANSI SQL외에, DBMS인 Oracle, MySQL, MS-SQL, PostgreSQL마다 문법과 함수가 조금씩 다른 경우가 있다.

이러한 SQL 표준을 지키지 않는 특정 벤더별 기능을 방언(Dialect)이라고 부른다.

ex)

MySQL Oracle 가변 문자 VARCHAR VARCHAR2 문자열 자르기 SUBSTRING() SUBSTR() 페이징 LIMIT ROWNUM 기본키 할당 AUTO_INCREMENT SEQUENCE

JPA는 특정 데이터베이스에 종속되지 않으며, 직접 SQL을 작성하고 실행하는 형태이기 때문에 별도 Dialect 설정을 해주면 JPA가 DBMS에 맞는 쿼리를 생성한다. 하이버네이트는 약 40가지 이상의 데이터베이스 방언을 지원한다.

Dialect 설정 방법(springboot 기준)

application.yml

spring : jpa: properties: hibernate: dialect : org.hibernate.dialect.Oracle10gDialect #dialect : org.hibernate.dialect.H2Dialect #dialect : org.hibernate.dialect.MySQL5InnoDBDialect #dialect : org.hibernate.dialect.PostgreSQLDialect #dialect : org.hibernate.dialect.SQLServerDialect

Custom Dialect

오라클 사용시, 자체 function을 호출하는 경우는 이러한 벤더별 방언을 상속받아서 구현하면 된다.

기본 function들은 쉽게 사용할 수 있도록 이미 구현되어 있다.

Oracle8Dialect.java oracle custom dialect

이렇게 상속한 dialect를 사용하려면, application.yml에 dialect 설정 값을 상속 받은 경로로 수정하면 된다.

spring : jpa: properties: hibernate: dialect : com.study.querydsl.config.MyOracleDialect #dialect : org.hibernate.dialect.Oracle10gDialect

QueryDsl에서 function 호출

참고 :

자바 ORM 표준 JPA 프로그래밍 - 기본편

https://www.inflearn.com/course/ORM-JPA-Basic

실전! Querydsl

https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84

불러오는 중입니다...

custom dialect

https://cnpnote.tistory.com/entry/SPRING-jpa-%EC%BF%BC%EB%A6%AC%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A7%80%EC%A0%95-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

공유하기 글 요소 저작자표시

from http://055055.tistory.com/83 by ccl(A) rewrite - 2020-03-21 15:20:26

댓글

이 블로그의 인기 게시물

데이터 바인딩 추상화 - propertyEditor

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

Spring Web Form