Hibernate를 사용하여 테이블에서 모든 데이터 가져 오기

1. 개요

이 빠른 자습서에서는 JPQL 또는 Criteria API를 사용하여 Hibernate로 테이블에서 모든 데이터를 가져 오는 방법을 살펴볼 것입니다.

JPQL은 Criteria API를 사용하는 것이 더 동적이고 강력하면서 더 빠르고 간단한 구현을 제공합니다.

2. JPQL

JPQL은 테이블에서 모든 항목을 가져 오는 간단하고 직접적인 방법을 제공합니다.

JPQL을 사용하여 테이블에서 모든 학생을 검색하는 모습을 살펴 보겠습니다.

public List findAllStudentsWithJpql() { return session.createQuery("SELECT a FROM Student a", Student.class).getResultList(); } 

Hibernate 세션의 createQuery () 메소드는 첫 번째 인자로 유형화 된 쿼리 문자열을 받고 두 번째 인자로 엔티티의 유형을받습니다. 결과를 형식화 된 List 로 반환하는 getResultList () 메서드를 호출하여 쿼리를 실행합니다 .

이 접근 방식의 장점은 단순성입니다. JPQL은 SQL에 매우 가깝기 때문에 작성하고 이해하기가 더 쉽습니다.

3. 기준 API

Criteria API는 JPA 쿼리 작성을위한 동적 접근 방식을 제공합니다.

이를 통해 쿼리 요소를 나타내는 Java 개체를 인스턴스화하여 쿼리를 작성할 수 있습니다. 그리고 많은 문자열 연결을 제거하기 때문에 많은 선택적 필드에서 쿼리를 구성하는 경우 더 깨끗한 솔루션입니다.

우리는 JPQL을 사용하는 전체 선택 쿼리를 보았습니다. Criteria API를 사용하여 이에 상응하는 것을 살펴 보겠습니다.

public List findAllStudentsWithCriteriaQuery() { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Student.class); Root rootEntry = cq.from(Student.class); CriteriaQuery all = cq.select(rootEntry); TypedQuery allQuery = session.createQuery(all); return allQuery.getResultList(); } 

먼저 형식화 된 Criteria Query 를 생성하는 데 사용 하는 CriteriaBuilder 를 얻습니다 . 나중에 쿼리의 루트 항목을 설정합니다. 마지막으로 getResultList () 메소드로 실행합니다 .

이제이 접근 방식은 이전에 수행 한 것과 유사합니다. 그러나 쿼리를 공식화 할 때 더 큰 뉘앙스를 표현하기 위해 Java 언어에 대한 완전한 액세스를 제공합니다.

유사 할뿐만 아니라 JPQL 쿼리와 JPA 기준 기반 쿼리는 동등하게 성능을 발휘합니다.

4. 결론

이 기사에서는 JPQL 또는 Criteria API를 사용하여 테이블에서 모든 엔티티를 가져 오는 방법을 설명했습니다.

예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다.