Otro tipo de solicitudes

Disponible

6.1 Consultas con nombre

Hibernate le permite no almacenar consultas directamente en el código. En su lugar, sugiere dar nombres a las consultas y almacenarlas por separado como anotaciones. Bueno, entonces tome la solicitud deseada directamente por su nombre. Ejemplo:

@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"),
...
})

Las anotaciones se pueden agregar antes de cualquier clase de Entidad: los nombres de consulta no están vinculados a ninguna Entidad.

También puede agregar varios parámetros a la consulta (query):

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

Usar tales solicitudes es muy simple; para esto, debe usar un método createNamedQueryen lugar de un método createQuery:

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

6.2 Consulta nativa

Y otra cosa sencilla pero muy útil es NativeQuery .

Si no quiere usar HQL, pero quiere usar Hibernate para el mapeo de entidades, entonces puede escribir consultas en el viejo SQL. Nadie te limita.

Para hacer esto, solo necesita llamar al método createNativeQuery(), en lugar de createQuery().

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

Simplemente escriba createNativeQueryy todo funcionará como antes. Este método devuelve un objeto de tipo NativeQuery , que admite todos los métodos que admite la clase Query . Nada cambiará para ti.

Además, Native SQL Query también se puede almacenar como Named Queries .

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

Y por supuesto, aquí está el código para trabajar con ellos:

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
1
Tarea
Módulo 4. Working with databases,  nivel 10lección 5
Bloqueada
task1010
task1010
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios