728x90
JPA는 특정 DB에 종속적이지 않은 기술이다. 따라서 DB의 교체가 손쉽게 이루어진다.
그런데 DB마다 제공하는 SQL 문법과 함수가 조금씩 다른 문제가 있다.
1. 데이터 타입
가변 문자타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2를 사용
2. 다른 함수명
문자열 자르는 함수로 SQL표준은 SUBSTRING()을 사용하지만, 오라클은 SUBSTR()을 사용
3. 페이징 처리
MySQL은 LIMIT을 사용하지만 오라클은 ROWNUM을 사용
이런 SQL 표준을 지키지 않거나, 특정 DB에만 고유한 기능을 JPA에서는 방언(dialect)이라고 한다.
이 문제를 해결하기 위해서 다양한 DB 방언 클래스를 제공한다.
특정 DB에 의존적인 SQL은 DB 방언이 처리해준다.
따라서 DB가 변경되어도 방언 클래스만 바꿔주면 애플리케이션 코드를 변경할 필요 없이 문제를 해결 할 수 있다.
하이버네이트에서 제공하는 Dialect의 종류
H2 : org.hibernate.dialect.H2Dialect
오라클 10g : org.hibernate.dialect.Oracle10gDialect
MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
728x90
'Spring' 카테고리의 다른 글
영속성 관리 (1) | 2024.09.22 |
---|---|
JPA Application 개발 (0) | 2024.09.21 |
JPA란 무엇인가? (0) | 2024.09.21 |
JPA를 왜 쓰는가? (0) | 2024.09.21 |
오늘부터 JPA (0) | 2024.09.21 |