jpa jpql 예제

JPQL의 세부 정보를 살펴보기 전에 모든 예제에 사용하는 엔터티 모델을 간략하게 살펴보겠습니다. 하위 쿼리는 하나 또는 여러 개의 레코드를 반환할 수 있으며 외부 쿼리에 정의된 별칭을 사용할 수 있습니다. 다음 예제에서는 하위 쿼리를 사용하여 작성자가 작성한 모든 책을 계산하고 1개 이상의 책을 작성한 저자만 반환하는 쿼리를 보여 옵니다. 네이티브 쿼리의 주요 단점은 결과 바인딩의 복잡성입니다. 이 예제에서 쿼리는 간단한 형식의 단일 결과를 생성하므로 이 문제를 방지할 수 있습니다. 그러나 실제로는 복잡한 형식의 결과 집합을 처리해야 하는 경우가 많습니다. 이 경우 네이티브 쿼리를 매핑할 수 있는 엔터티를 선언하거나 여러 엔터티에 매핑된 복잡한 결과 집합을 정의하거나 엔터티 및 스칼라 결과 의 혼합에 매핑해야 합니다. 지금까지 의 문서 예제에 대한 쿼리 결과는 단순히 인쇄되었습니다. 그러나 실제 응용 프로그램에서는 쿼리 결과에 대한 몇 가지 추가 작업을 수행해야 할 수 있습니다.

예를 들어 검색된 인스턴스를 업데이트한 다음 다시 데이터베이스에 유지해야 할 수 있습니다. 이렇게 하면 JPQL 쿼리에서 검색중인 인스턴스가 응용 프로그램에서 추가로 처리할 준비가 되어 있는지 또는 인스턴스를 준비하려면 몇 가지 추가 단계가 필요한지 에 대한 의문이 제기됩니다. 특히 현재 지속성 컨텍스트에 관한 검색된 엔터티 인스턴스가 무엇인지 에서 알아보는 것이 흥미로워질 것입니다. 다음 코드 조각은 JPQL 조인 쿼리의 작업 예제를 보여 주며 있습니다. 관련된 엔터티가 서로 어떻게 관련되어 있는지 더 잘 이해하려면 문서의 뒷부분에 표시된 샘플 응용 프로그램 섹션에 표시된 그림 1로 되돌릴 수 있습니다. 다음 예제에서 findWithName 비즈니스 메서드는 입력 매개 변수를 사용 하 여 다시 작성 됩니다. 요약하자면, 지속성 컨텍스트는 해당 컨텍스트와 연결된 EntityManager 인스턴스에서 관리하는 엔터티 인스턴스 집합입니다. 앞의 예제에서는 EntityManager의 createQuery 메서드를 사용하여 JPQL 쿼리를 실행하기 위한 쿼리 인스턴스를 만들었습니다. 실제로 EntityManager API에는 엔터티 인스턴스의 수명 주기를 관리하고 트랜잭션을 제어하며 쿼리 인스턴스를 만드는 20개 이상의 메서드가 포함되어 있으며, 이 메서드는 지정된 쿼리를 실행하고 쿼리 결과를 검색하는 데 사용됩니다. JPQL을 사용하면 SELECT 절에서 생성자 호출을 정의할 수 있습니다. 다음 코드 조각에서 예제를 볼 수 있습니다.

정규화된 클래스 이름을 제공하고 기존 생성자의 생성자 매개 변수를 지정하기만 하면 됩니다. 엔터티 프로젝션과 마찬가지로 최대 절전 모드는 필요한 데이터베이스 열을 반환하고 생성자 참조를 사용하여 결과 집합의 각 레코드에 대한 새 개체를 인스턴스화하는 SQL 쿼리를 생성합니다. 이 예제에서는 업데이트 쿼리를 사용하여 직원에게 인상을 주는 방법을 보여 줍니다. WHERE 절에는 조건식이 포함되어 있습니다. 주의: 최대 절전 모드에서 치료의 구현에 몇 가지 문제가 있습니다 5.1. 내 실험에 따라 최대 절전 모드 5.1은 소문자로 작성되어 WHERE 절에 사용되는 경우에만 취급을 처리합니다. 이 예제의 처리 연산자는 최대 절전 모드에서 5.1.0.Final에서 무시됩니다. 다음 코드 조각은 aggregate function count()를 사용하여 각 성이 Author 테이블에서 발생하는 빈도를 계산하는 예제를 보여 주며 있습니다.