Hibernate 3
Criteria c'est quoi?
Criteria permet d'interroger une base de donnée sans faire de SQL a
l'interieur d'un programme en JAVA, on fait une liste de criteres et on obtien ensuite une liste de tous les resultat
example
On a le diagramme de classe suivant, on a une gamme dans une famille, dans un produit, dans un contrat d'assurance.
D'un point de vue de la base de donnée on a 4 tables :
- Une table Gamme
- Une table Famille qui contient une clé etrangère vers Gamme
- Une table Produit qui contient une clé etrangère cers Famille
- une table ContratAssurance qui contient une clé etrangère vers Produit.
donc coté java on travaille avec des objets, voici la methodes qui permet de rechercher un contrat d'assurance en fonction
- Du nom de Produit auquel il est associé
- Du nom de Famille du Produit
- De la Gamme de la famille
- du montantInitial du contratAssurance
public List<ContratAssurance> rechercherContratAssurance(Double mi, String nomP, String nomF, String nomG){
//on creer un objet Criteria fait pour la classe ContratAssurance,
//on accedera au champ de la table par "ca" ("ca" est un alias)
Criteria c = HibernateUtil.getSessionFactory().getCurrentSession()
.createCriteria(ContratAssurance.class, "ca")
//Pour acceder aux sous-objets il faut creer des alias
c.createAlias("ca.prod", p);
c.createAlias("p.family", f);
c.createAlias("p.gam", g);
//ici on a 4 alias, ca, p, f, g
//on ajoute les critere de recherche a l'objet Criteria
c.add(Restriction.eq("ca.montantInitial", mi));
c.add(Restriction.eq("p.nom", nomP));
c.add(Restriction.eq("f.nom", nomF));
c.add(Restriction.eq("g.nom", nomG));
//on recupere les resultat
return c.List();
}
Notez qu'au debut l'objet c contient TOUT le contenu de la table ContratAssurance et qu'au fur et a mesure que l'on
ajoute des criteres la liste diminue.