JPA Dialect
김영한님의 강의 내용 정리, oracle dialect 상속 및 사용자 함수 추가
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들은 쉽게 사용할 수 있도록 이미 구현되어 있다.
이렇게 상속한 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
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다. 초급 웹 개발 서버 데이터베이스 프레임워크 및 라이브러리 프로그래밍 언어 서비스 개발 Java JPA Spring Data JPA 온라인 강의 ORM, JPA, 자바, java, 우아한형제들
www.inflearn.com
실전! Querydsl
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84