JPQL
- JPA를 사용하면 엔티티 객체를 중심으로 개발
- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
JPQL은 엔티티 객체를 대상으로 쿼리, SQL은 데이터베이스 테이블을 대상으로 쿼리
// 검색
String jpql = "select m From Member m where m.name like '%hello%'"; // Member m << 엔티티
List<Member> result = em.createQuery(jpql, Member.class)
.getResultList();
JPQL 문법
select m from Member m where m.age > 18
- 엔티티와 속성은 대소문자 구분(Member, username)
- JPQL 키워드는 대소문자 구분 안함 (SELECT, FROM, WHERE)
- 엔티티 이름을 사용, 테이블 이름이 아님(Member)
- 별칭은 필수 (m)
SELECT m FROM Member m where m.username =: useranme
query.setParameter("username", usernameParam);
SELECT m FROM Member m where m.username =?1
query.setParameter(1, usernameParam);
Named 쿼리 - 정적 쿼리
- 미리 정의해서 이름을 부여해두고 사용하는 JPQL
- 어노테이션, XML에 정의
- 애플리케이션 로딩 시점에 초기화 후 재사용
- 애플리케이션 로딩 시점에 쿼리를 검증
- query.getResultList() - 결과가 하나 이상, 리스트 반환
- query.getSingleResult() - 결과가 정확히 하나, 단일 객체 반환 (정확히 하나가 아니면 예외 발생)
@Entity
@NamedQuery(
name = "Member.findByUsername",
query = "select m from m where m.username =: username")
public class Member {
}
List<Member> resultList =
em.createQuery("Member.findByusername", member.class)
.getResultList();
'1. 웹개발 > 1_2_3 Spring Boot' 카테고리의 다른 글
[Spring Boot] Mybatis Oracle 연동하는 방법 (0) | 2021.03.02 |
---|---|
[Spring Boot] JPA 설정 방법 (0) | 2020.03.08 |
[Spring Boot] InteliJ Lombok 설정 방법 (1) | 2020.03.08 |
[Spring Boot] initializer 설정 방법 (0) | 2020.03.08 |