samedi 11 août 2012

Faire des requettes criteria

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.

Aucun commentaire:

Enregistrer un commentaire