기본 문법과 쿼리 API
jpa-jpql 프로젝트 실습
Last updated
jpa-jpql 프로젝트 실습
Last updated
JPQL은 객체지향 쿼리 언어다.따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다.
JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하 지 않는다.
JPQL은 결국 SQL로 변환된다.update문, delete문 : 벌크 연산. 한번에 여러개를 연산할 때.
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 반환.
파라미터 바인딩 - 이름 기준
보통 아래처럼 체인메서드로 사용한다.
파라미터 바인딩 - 위치 기준 잘 사용하지 않는다. 인덱스가 중간에 삽입되면 장애 발생하기 때문!