1_Jpa개요.pdf


Dialect
- DBMS마다 SQL 문법이 다름
- 같은 코드라도 DB를 바꾸면 SQL 문법이 달라져서 문제
- MySQL:
LIMIT 10
- Oracle:
ROWNUM <= 10
- H2:
LIMIT 10 (비슷하지만 또 차이 있음)
- 이런 차이를 JPA가 직접 일일이 구분할 수는 없으니까, DBMS별 문법 차이를 추상화해서 처리하는 게
Dialect
- JPA는 SQL을 직접 쓰지 않고 객체 중심 쿼리(JPQL)를 사용
- JPQL → Dialect → 각 DB에 맞는 SQL로 변환
MySQLDialect → MySQL SQL 문법으로 변환
OracleDialect → Oracle SQL 문법으로 변환
H2Dialect → H2 SQL 문법으로 변환
⇒ 개발자는 JPQL이라는 하나의 언어만 쓰면 되고, Dialect가 알아서 DB 사투리(SQL 문법)를 맞춰줌
- DBMS 교체가 쉬워짐 (개발은 H2, 운영은 MySQL/Oracle 등)
- JPA는 Dialect 덕분에 DB 교체 시 코드 수정 최소화 가능
- 예시: 개발환경은 H2(DB) → 운영환경은 MySQL(DB)
- 코드(JPQL)는 그대로 두고, Dialect 설정만 바꾸면 SQL 변환이 자동으로 적용됨


동적 SQL인 select는 → mybatis로 구현