HQL
🧩 HQL
정의
HQL은 Hibernate Query Language의 약어로, Hibernate에서 사용하는 객체 지향 쿼리 언어이다. 테이블이 아니라 엔티티와 속성을 기준으로 쿼리를 작성한다.
SQL과 비슷하지만 객체 모델 중심으로 동작한다.
🧩 역할
- 엔티티와 필드를 기준으로 쿼리를 작성한다
- 상속, 다형성, 연관관계를 활용할 수 있다
- 객체 중심의 조회와 수정 쿼리를 작성한다
- Hibernate 내부 쿼리 처리에 사용된다
🛠 특징
- SQL과 문법이 유사하지만 테이블 이름 대신 엔티티 이름을 사용한다
- 쿼리 결과를 객체로 받는 데 적합하다
- 상속 관계와 연관 관계를 자연스럽게 다룰 수 있다
- 대소문자는 클래스명과 속성명 기준으로 주의해서 작성해야 한다
🛠 사용 예시
조회
List<User> users = entityManager
.createQuery("SELECT u FROM User u WHERE u.status = 'ACTIVE'", User.class)
.getResultList();
수정
@Modifying
@Query("UPDATE User u SET u.userName = :newUserName WHERE u.email = :email")
int updateUserNameByEmail(@Param("newUserName") String newUserName,
@Param("email") String email);
⚠️ 주의사항
- HQL은 Hibernate 전용 쿼리 언어다.
- 테이블 이름이 아니라 엔티티 이름을 사용해야 한다.
- DB 고유 SQL과는 문법이 다를 수 있다.
- UPDATE, DELETE에는
@Modifying과 함께 쓰는 경우가 많다. - JPQL과 매우 비슷하지만 Hibernate 기능에 더 가깝다.
📌 정리
HQL은 Hibernate가 제공하는 객체 지향 쿼리 언어다.- 엔티티와 속성 중심으로 작성한다.
- JPQL과 비슷하지만 Hibernate 전용 기능이라는 점을 기억하면 좋다.
댓글남기기