본문 바로가기

개발중/Java Persistence API (JPA)

🟡 JPQL 이란 ?

728x90
반응형

🟡 JPQL 이란 ?

JPQL 은 엔티티 객체를 조회하는 객체지향 쿼리이다.

 

문법은 SQL 과 비슷하고 ANSI 표준 SQL 이 지원하는 기능을 유사하게 지원한다.

JPQL 은 SQL 을 추상화 해서 특정 DB 에 의존하지 않는다.

 

그리고 DB 방언만 변경하면 JPQL을 수정하지 않아도 자연스럽게 데이터 베이스를 변경할 수 있다.

예를 들어 SQL 함수라도 DB 마다 사용문법이 다른 것이 있는데,

JPQL 이 제공하는 표준화된 함수를 사용하면 선택한 방언에 따라 해당 DB 에 맞춘 적절한 SQL 함수가 실행된다.

 

JPQL 은 SQL 보다 간결하다.


🟣 JPQL 특징

  • JPQL 은 객체지향 쿼리 언어이다. 따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리 한다.
  • JPQL 은 SQL 을 추상화 해서 특정 DB SQL 에 의존하지 않는다.
  • JPQL 는 결국 SQL 로 변환한다

🟣 JPQL 문법

  • 예약어는대소문자 구분 안해요
    • EX ) SELECT, FROM, AS ...
  • 엔티티 이름을 지정하지 않으면 클래스 명을 기본 값으로 설정해요
    • EX ) @Entity(name="XXX")
  • 별칭은 필수
    • EX ) Member AS m

🟣 회원 엔티티

 

@Entity(name="Member")

public class Member {

 

    @Colum ( name="Member" )

    private String username;

}


🟣 JPQL 사용

 

회원 이름이 'kim' 인 사람 조회

 

String jpql = "select m from Member as m where m.username = 'kim' ";

LIST<Member> resultList = em.createQuery( jpql, Member.class ).getResultList(); 


JPQL 에서 Member 은 엔티티 이름이다.

그리고 m.username 은 테이블 컬럼명이 아니라 엔티티 객체의 필드명이다.

 

em.createQuery() 메소드에 실행할 JPQL 과 엔티티 클래스 타입인 Member.class 를 넘겨주고

getResultList() 메소드를 실행하면 JPA 는 JPQL 을 SQL 로 변환해서 DB 를 조회한다.


 

728x90
반응형

'개발중 > Java Persistence API (JPA)' 카테고리의 다른 글

🟡 Criteria이란 ?  (0) 2021.07.01
🟡 QueryDSL이란 ?  (0) 2021.07.01
객체 지향 쿼리 소개  (0) 2021.07.01
Java 객체/ 기본값 타입의 특징  (0) 2021.06.30
JPA - 값 타입 컬렉션  (0) 2021.06.30