티스토리 뷰

jvm언어관련/JPA

JPA Dialect

055055 2020. 3. 21. 13:45
반응형
반응형

김영한님의 강의 내용 정리, 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들은 쉽게 사용할 수 있도록 이미 구현되어 있다.

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

 

자바 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

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함