다른 유형의 요청

사용 가능

6.1 명명된 쿼리

최대 절전 모드에서는 코드에 직접 쿼리를 저장할 수 없습니다. 대신 그는 쿼리 이름을 지정하고 주석으로 별도로 저장할 것을 제안합니다. 그런 다음 원하는 요청을 이름으로 직접 가져옵니다. 예:

@org.hibernate.annotations.NamedQueries({
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindById",
  	query = "from Employee where id = :id"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindAllEmployes",
  	query = "from Employee"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_UpdateEmployeeName",
  	query = "Update Employee set name = :newName where id = :id"),
...
})

Entity 클래스 앞에 주석을 추가할 수 있습니다. 쿼리 이름은 Entity에 연결되지 않습니다.

쿼리(쿼리)에 다양한 매개변수를 추가할 수도 있습니다.

@org.hibernate.annotations.NamedQuery(
  name = "Employee_ FindAllEmployes",
  query = "from Employee",
  timeout = 1,
  fetchSize = 10,
  cacheable = true,
  cacheMode = "GET"
)

createNamedQuery이러한 요청을 사용하는 것은 매우 간단합니다. 이를 위해서는 메소드 대신 메소드를 사용해야 합니다 createQuery.

Query<Employee> query = session.createNamedQuery("Employee_FindAllEmployes", Employee.class);
List<Employee> resultLIst = query.list();

6.2 네이티브 쿼리

간단하지만 매우 유용한 또 다른 기능은 NativeQuery 입니다 .

HQL을 사용하고 싶지 않지만 엔터티 매핑에 Hibernate를 사용하려는 경우 좋은 이전 SQL로 쿼리를 작성할 수 있습니다. 아무도 당신을 제한하지 않습니다.

이렇게 하려면 메서드 createNativeQuery()대신 를 호출하기만 하면 됩니다 createQuery().

NativeQuery<Employee> query = session.createNativeQuery("select * from employee", Employee.class);
List<Employee> resultLIst = query.list();

쓰기만 하면 createNativeQuery모든 것이 이전처럼 작동합니다. 이 메서드는 Query 클래스가 지원 하는 모든 메서드를 지원하는 NativeQuery 유형의 객체를 반환합니다 . 아무것도 당신을 위해 변경되지 않습니다.

또한 네이티브 SQL 쿼리는 명명된 쿼리 로 저장할 수도 있습니다 .

@org.hibernate.annotations.NamedNativeQueries(
    @org.hibernate.annotations.NamedNativeQuery(name = "Employee_GetAll",
  	query = "select * from employee",
  	resultClass = Employee.class)
)

물론 여기에 작업을 위한 코드가 있습니다.

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다