JPA

JPQL

으엉어엉 2024. 8. 30. 18:57
728x90

JPQL 소개

    • JPQL은 객체지향 쿼리 언어다. 따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다.

    • JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하 지 않는다.

    • JPQL은 결국 SQL로 변환된다.

 

 

• 엔티티와 속성은 대소문자 구분O (Member, age)

• JPQL 키워드는 대소문자 구분X (SELECT, FROM, where)

 

Entity 이름 사용 ( table name X)

@Entity(name = "Member")

 

별칭은 필수(m) (as는 생략가능)

select m from Member as m where m.age > 18

 

 

• TypeQuery: 반환 타입이 명확할 때 사용

• Query: 반환 타입이 명확하지 않을 때 사용

 

TypedQuery<Member> query = em.createQuery("select m from Member m ", Member.class);
//Type이 명확하면 클래스 정확하게 가져오면 된다. 만약 두개 다르면 TypeQuery대신 그냥 Query

 

query.getResultList(): 결과가 하나 이상일 때, 리스트 반환

      • 결과가 없으면 빈 리스트 반환

query.getSingleResult(): 결과가 정확히 하나, 단일 객체 반환

만약 하나가 아니면 예외가 발생한다.

 

데이터 베이스 관계없이 써도 된다.

• CONCAT

• SUBSTRING

• TRIM

• LOWER, UPPER

• LENGTH

• LOCATE

• ABS, SQRT, MOD

• SIZE, INDEX(JPA 용도)

 

이게 안되면

사용자 정의 함수 호출을 하면 된다.

사용하는 DB 방언을 상속받고, 사용자 정의 함수를 등록한다.

select function('group_concat', i.name) from Item i

728x90

'JPA' 카테고리의 다른 글

페이징 API , Join  (0) 2024.11.08
JPA의 다양한 쿼리방법  (0) 2024.08.30
JPA 기본 값 타입  (7) 2024.08.28
JPA 고아객체  (0) 2024.08.25
JPA 영속성 전이 CASCADE  (0) 2024.08.25