>  기사  >  Java  >  Hibernate에서 사용자 정의 쿼리에 @Query 주석을 사용하는 방법은 무엇입니까?

Hibernate에서 사용자 정의 쿼리에 @Query 주석을 사용하는 방법은 무엇입니까?

王林
王林원래의
2024-04-17 11:09:01557검색

Hibernate에서 사용자 정의 쿼리에 @Query 주석을 사용하는 방법은 무엇입니까? Hibernate의 @Query 주석을 사용하면 JPQL 또는 SQL을 사용하여 사용자 정의 쿼리를 수행할 수 있습니다. JPQL 쿼리: 엔터티 클래스 메서드에 @Query 주석을 추가합니다. JPQL 쿼리 문자열을 지정합니다. SQL 쿼리: @NamedNativeQuery 주석을 사용하여 명명된 기본 쿼리를 정의합니다. 쿼리 문과 결과 클래스를 지정합니다. 실제 예: 다음 쿼리를 사용하여 특정 부서의 직원을 찾을 수 있습니다. @Query("SELECT e FROM Employee e WHERE e.department = :department") Lista7c15504e26c2dc9d33fa17ec3230b5f findEmployeesInDepartment(@Param("department") String Department);

如何在 Hibernate 中使用 @Query 注解进行自定义查询?

사용자 정의 쿼리를 위해 Hibernate에서 @Query 주석을 사용하는 방법

소개

Hibernate의 @Query 주석을 사용하면 엔터티 클래스에 대한 사용자 정의 JPQL 또는 SQL 쿼리를 정의합니다. 낮은 수준의 SQL 코드를 작성하지 않고도 고급 쿼리를 수행할 수 있는 편리한 방법을 제공합니다. @Query 注解允许我们在实体类上定义自定义 JPQL 或 SQL 查询。它提供了一个方便的方式来执行更高级的查询,而无需编写低级别 SQL 代码。

JPQL 查询

要使用 JPQL(Java 持久化查询语言),需要在实体类方法上添加 @Query 注解,并指定 JPQL 查询字符串。例如:

@Query("SELECT e FROM Employee e WHERE e.salary > 50000")
List<Employee> findEmployeesWithSalaryGreaterThan50000();

这段代码定义了一个查询,它返回所有薪水大于 50,000 的员工。

SQL 查询

要使用原生 SQL 查询,可以使用 @NamedNativeQuery 注解。@NamedNativeQueries 允许我们定义多个命名的原生查询。例如:

@NamedNativeQueries({
    @NamedNativeQuery(
        name = "findEmployeesWithSalaryGreaterThan50000",
        query = "SELECT * FROM Employee WHERE salary > 50000",
        resultClass = Employee.class
    )
})

这段代码定义了一个名为 "findEmployeesWithSalaryGreaterThan50000" 的原生 SQL 查询,它返回所有薪水大于 50,000 的员工。

实战案例

考虑这样的实体类:

@Entity
public class Employee {
    @Id
    private Long id;
    private String name;
    private double salary;
    //省略 getter 和 setter
}

我们可以使用 @Query 注解来查找特定部门中的所有员工:

@Query("SELECT e FROM Employee e WHERE e.department = :department")
List<Employee> findEmployeesInDepartment(@Param("department") String department);

现在,我们可以使用 findEmployeesInDepartment 方法来获取特定部门中的所有员工,如下所示:

List<Employee> employees = employeeRepository.findEmployeesInDepartment("Engineering");

结论

@Query

JPQL 쿼리🎜🎜JPQL(Java Persistence Query Language)을 사용하려면 엔터티 클래스 메서드에 @Query 주석을 추가하고 JPQL 쿼리 문자열을 지정해야 합니다. 예: 🎜rrreee🎜이 코드는 급여가 50,000보다 큰 모든 직원을 반환하는 쿼리를 정의합니다. 🎜🎜SQL 쿼리🎜🎜네이티브 SQL 쿼리를 사용하려면 @NamedNativeQuery 주석을 사용할 수 있습니다. @NamedNativeQueries를 사용하면 여러 개의 명명된 기본 쿼리를 정의할 수 있습니다. 예: 🎜rrreee🎜이 코드는 급여가 50,000보다 큰 모든 직원을 반환하는 "findEmployeesWithSalaryGreaterThan50000"이라는 기본 SQL 쿼리를 정의합니다. 🎜🎜실용 사례🎜🎜다음 엔터티 클래스를 고려하세요. 🎜rrreee🎜@Query 주석을 사용하여 특정 부서의 모든 직원을 찾을 수 있습니다. 🎜rrreee🎜이제 findEmployeesInDepartment 메소드를 사용하면 아래와 같이 특정 부서의 모든 직원을 얻을 수 있습니다. 🎜rrreee🎜Conclusion🎜🎜<code>@Query 주석은 사용자 정의 쿼리를 수행할 수 있게 해주는 Hibernate의 강력한 도구입니다. JPQL 또는 기본 SQL을 사용하여 쿼리를 작성하고 명명된 매개변수를 사용하여 쿼리 매개변수를 동적으로 전달할 수 있습니다. 🎜

위 내용은 Hibernate에서 사용자 정의 쿼리에 @Query 주석을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기