세상엔 많은 데이터베이스 제품이 존재하고, 각각의 제품은 표준 SQL(ANSI SQL)을 제외한 독자적인 기능을 위한 SQL도 존재한다.
- SQL Server : ANSI SQL + T-SQL
- Oracle : ANSI SQL + PL/SQL
- 기타 등등...
그리고 각각의 데이터베이스에서 제공하는 문법과 함수가 차이가 있다.
- 가변문자 : VARCHAR(MySQL), VARCHAR2(Oracle), NVARCHAR(SQL Server)
- 문자열 자르는 함수 : SUBSTRING(표준 SQL), SUBSTR(Oracle)
- 페이징 : LIMIT(MySQL), ROWNUM(Oracle)
이러한 차이를 방언(Dialect)라고 하며, JPA에서는 추상화된 방언 클래스를 제공한다. JPA를 사용하지 않으면 애플리케이션의 DBMS가 변경될 경우 혹은 같은 애플리케이션을 다른 DBMS에서 동작시켜야하는 경우 기존에 작성된 SQL을 모두 수정해야하지만, JPA를 사용하면 이 Dialect 덕분에 그러한 시간과 비용을 아낄 수 있다.
DBMS별 hibernate Dialect 설정 방법은 persistence.xml 파일에서 hibernate.dialect 설정 값을 변경해주면 된다.
- H2 : org.hibernate.dialect.H2Dialect
- Oracle 10g : org.hibernate.dialect.Oralce10gDialect
- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
- MariaDB : org.hibernate.dialect.MariaDBDialect
출처 :: 인프런 강의(자바 ORM 표준 JPA 프로그래밍 - 기본편)
반응형
'🌱 SPRING > JPA' 카테고리의 다른 글
[JPA] 플러시(flush) (0) | 2020.06.13 |
---|---|
[JPA] 영속성 컨텍스트 (0) | 2020.06.07 |
[JPA] JPQL 맛보기 (0) | 2020.06.07 |
[JPA] JPA로 CRUD 작성하기 (0) | 2020.06.06 |
[JPA] JPA가 뭘까? (0) | 2020.06.03 |