본문 바로가기
JPA

JPQL

by 혀눅짱 2023. 9. 13.

JPQL(Java Persistence Query Language)


JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.

따라서 테이블을 대상으로 쿼리 하는 것이 아닌 엔티티 객체를 대상으로 쿼리한다.

 JPQL은 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는 장점이 있다.

JPQL은 SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다.

JPQL은 결국 SQL로 변환된다.

 

 

예시

public List<Member> findAll(){
   return em.createQuery("select m from Member m", Member.class).getResultList();
}

public List<Member> findByName(String name){
    return em.createQuery("select m from Member m where m.name=:name", Member.class)
            .setParameter("name",name).getResultList();
}

첫번째 메소드는 모든회원을 조회하고 두번째 메소드는 이름을 조건으로 회원을 조회한다.

파라미터로 들어갈 자리는 :name으로 콜론으로 명시한다.

 

여기서 주의할점 해당 JQPL의 Member는 테이블명이아닌 도메인 객체 Member를 뜻한다.

JPQL에서 주의할점이 몇가지가 있다.

 

1. 엔티티와 속성은 대소문자를 구분한다.

2.키워드는 대소문자를 구분하지 않는다.

3.JPQL은 기본 문자열로 작성되기 때문에 컴파일 시 에러를 발생하지 않는다.

 

JPA공부를 해오면서 거의 Spring DATA JPA와 QueryDSL을 사용하기때문에 순수한 JPQL을 사용한것이 가물가물했다.

실제로 순수하게 쓰진 않으므로 간단히 정리만 해본다.

'JPA' 카테고리의 다른 글

즉시로딩 과 지연로딩 그리고 N+1  (0) 2023.09.20
Entity 상속  (0) 2023.09.13
영속성 컨텍스트  (0) 2023.09.13
연관관계 설정  (0) 2023.09.11
JPA 기본문법 파악  (0) 2023.09.11