Les requêtes nommées avec hibernate
Par philippe voncken, mardi 10 mars 2009 à 23:13 :: Java :: #106 :: rss
Petit billet technique pour parler de la possibilité d'effectuer des requêtes SQL sur la couche Hibernate. L'exemple que nous allons voir ci-dessous est simpliste pour une raison de pédagogie. On peut avoir besoin d'effectuer une requête SQL sur un projet IT lorsqu'un problème se résout plus simplement ainsi, que par les outils natifs Hibernate.
Une bonne pratique est de déclarer la procédure nommée sur l'objet Hibernate qui est directement concerné. La raison est simplement de pouvoir retrouver rapidement cette requête le jour où on la cherche. La manière de la déclaré est la suivante.
@Entity
..
@NamedQueries({ @NamedQuery(
name = HObject.QUERY_FIND_NAME,
query = "select distinct champ1 from table1 t order by champs2") })
public class HObject {
public static final String QUERY_FIND_NAME = "nameproc1";
..
}
Ensuite on l'utilise sur le DAO, en imaginant que l'on appelle le DAO de cette manière.
this.dao.findByNamedQuery(HObject.QUERY_FIND_NAME);
Et que la définition du DAO ressemble à quelque chose comme ça.
publicList findByNamedQuery(final String pName, final String... pValues) { final Query vQuery = this.getSession().getNamedQuery(pName); int vCpt = 0; for (final String vParam : pValues) { vQuery.setString(vCpt++, vParam); } return vQuery.list(); }
La définition du DAO gère les paramètres au cas où la requête en ai besoin. Dans notre exemple cette gestion n'a pas d'importance, mais elle permet de mieux illustrer la notion de DAO.
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.