기본 문법과 쿼리 API

jpa-jpql 프로젝트 실습

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

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

  • JPQL은 결국 SQL로 변환된다.update문, delete문 : 벌크 연산. 한번에 여러개를 연산할 때.

객체 모델과 DB 모델

JPQL 문법

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

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

  • 엔티티 이름 사용, 테이블 이름이 아님(Member) 별칭은 필수(m) (as는 생략가능)

집합과 정렬

  • GROUP BY

  • HAVING ORDER BY

TypeQuery와 Query⭐️⭐️⭐️⭐️⭐️

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

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

결과 조회 API

  • query.getResultList(): 결과가 하나 이상일 때, 리스트 반환 결과 없으면 빈 리스트 반환(NullPointerException은 걱정 안해도 됨.)

  • query.getSingleResult() select m from Member as m where m.id==... 이렇게 식별자 값을 정해서 결과가 정확히 하나의 단일 객체를 반환할 때 결과가 없으면 : javax.persistence.NoResultException 둘 이상이면 : javax.persistence.NonUniqueResultException Spring Data JPA => 결과가 없으면 Exception이 아니라 null 또는 optional 반환.

파라미터 바인딩 - 이름 기준

보통 아래처럼 체인메서드로 사용한다.

파라미터 바인딩 - 위치 기준 잘 사용하지 않는다. 인덱스가 중간에 삽입되면 장애 발생하기 때문!

Last updated

Was this helpful?