JPQL의 정의는 다음과 같다.
- 엔터티 객체를 중심으로 개발할 수 있는 객체 지향 쿼리이다.
- SQL보다 간결하며 특정 DBMS에 의존하지 않는다.
- 방언을 통해 해당 DBMS에 맞는 SQL을 실행하게 된다.
- JPQL은 find() 메소드를 통한 조회와 다르게 항상 데이터베이스에 SQL을 실행해서 결과를 조회한다.
내가 아는 방언은 사투리밖에 없는데 무슨 뜻인지 몰라서 찾아봤다
JPQL을 특정 데이터베이스에서 실행하기 위해서는 해당 데이터베이스의 SQL 문법으로 변환이 필요하다
이때 사용되는 것이 "방언(Dialect)"이다.
방언(Dialect)이란?
방언은 데이터베이스 독립적인 코드를 데이터베이스 종속적인 코드로 변환해주는 역할을 한다.
각 데이터베이스는 고유한 SQL 문법과 기능을 가지고 있기 때문에, Hibernate와 같은 ORM(Object-Relational Mapping) 프레임워크에서는 이러한 차이를 처리하기 위해 방언을 사용한다.
방언은 특정 데이터베이스의 특성을 반영하여 SQL 쿼리를 생성하고 실행하는 방법을 정의한다.
예를 들어, MySQL과 Oracle은 비슷한 기능을 제공하지만, 그 문법은 다를 수 있다.
Hibernate는 JPQL 쿼리를 해석하여 각 데이터베이스에 맞는 SQL로 변환하기 위해 방언을 사용한다.
결론
방언은 JPQL로 만들어진 공통쿼리를 DBMS별로 SQL을 변환해주는 역할을 한다
'SPRING > JPA' 카테고리의 다른 글
[JPA] 상속 Table Per Class전략과 자동생성 키 @GeneratedValue의 Identity전략을 함께 사용할 수 없는 이유 (0) | 2024.07.11 |
---|---|
[JPA] FetchType.LAZY와 FetchType.EAGER (0) | 2024.07.10 |