Autres types de demandes

Disponible

6.1 Requêtes nommées

Hibernate vous permet de ne pas stocker les requêtes directement dans le code. Au lieu de cela, il suggère de donner des noms aux requêtes et de les stocker séparément sous forme d'annotations. Eh bien, prenez la demande souhaitée directement par son nom. Exemple:

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

Des annotations peuvent être ajoutées avant toute classe d'entité : les noms de requête ne sont liés à aucune entité.

Vous pouvez également ajouter divers paramètres à la requête (query) :

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

L'utilisation de telles requêtes est très simple - pour cela, vous devez utiliser une méthode createNamedQueryau lieu d'une méthode createQuery:

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

6.2 NativeQuery

Et une autre chose simple mais très utile est NativeQuery .

Si vous ne souhaitez pas utiliser HQL, mais souhaitez utiliser Hibernate pour le mappage d'entités, vous pouvez écrire des requêtes dans le bon vieux SQL. Personne ne vous limite.

Pour ce faire, il vous suffit d'appeler la méthode createNativeQuery(), au lieu de createQuery().

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

Vous venez d'écrire createNativeQueryet tout fonctionnera comme avant. Cette méthode renvoie un objet de type NativeQuery , qui prend en charge toutes les méthodes prises en charge par la classe Query . Rien ne changera pour vous.

De plus, les requêtes SQL natives peuvent également être stockées en tant que requêtes nommées .

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

Et bien sûr, voici le code pour travailler avec eux :

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires