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
댓글
댓글 쓰기