Skip to content

Latest commit

 

History

History
40 lines (36 loc) · 1.36 KB

JPQL.md

File metadata and controls

40 lines (36 loc) · 1.36 KB

JPQL

JPA 를 사용하면 객체를 중심으로 개발
JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
JPQL은 엔티티 객체를 대상으로 쿼리, SQL은 데이터베이스 테이블을 대상으로 쿼리

String jpql = "select m From Member m where m.name like '%hello%'";
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)

Named 쿼리 - 정적 쿼리

  • 미리 정의해서 이름을 부여해두고 사용하는 JPQL
  • 어노테이션, XML에 정의
  • 애플리케이션 로딩 시점에 초기화 후 재사용
  • 애플리케이션 로딩 시점에 쿼리 검증
  • query.getResultList() - 결과가 하나 이상, 리스트 반환
  • query.getSingleResult() - 결과가 정확히 하나, 단일 객체 반환(아니면 Exception)
@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();