[EJB2.0]Vérifier inexistence d'un objet avant de le créer
Bonjour,
Je débute un projet en struts/ejb2.0 à mon travail (je n'ai pas la possibilité de prendre autre chose) et je suis en train de me poser pas mal de questions; entre autre sur comment réaliser un enregistrement depuis un Bean Session Stateless qui attaque un EJB entity.
En effet, j'aimerais avant de procéder à la création d'un nouvel enregistrement dont je connais les valeurs vérifier qu'il n'existe pas déjà un doublon en base ( même PK).
J'ai donc fait le code suivant dans mon EJB session:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public void creerCompostage(String a, String b, String c, String d) throws Exception{
// Vérification des valeurs fournies
if (a.trim()==null || b.trim()==null || c.trim() ==null || d.trim()==null)
{ throw new Exception ("Impossible de créer un compostage avec des champs vides");
// retour en erreur au niveau supérieur
}
// vérification de l'inexistance d'un compostage identique en base
try{
CompostagePK pk = new CompostagePK();
pk.cle=a;
pk.num=b;
CompostageLocalHome complocal = (CompostageLocalHome) getCompostageLocalHome().findByPrimaryKey(pk);
}catch (FinderException f)
{
// le compostage n'existe pas on peut donc le créer
try{ // création du DTO pour le nouveau compostage
CompostageLocalDTO compostage = new CompostageLocalDTO();
compostage.setCle(b);
compostage.setNum(a);
compostage.setTrim(c);
compostage.setTyp(d);
newCompostage(compostage);
}catch (Exception e){
throw new Exception(e.toString());
}
return;
}
// le compostage existe déjà, il va falloir sortir en erreur
throw new Exception("Impossible de créer le compostage, un compostage identique existe déjà en base");
}
} |
Le fait de passer par l'exception pour le cas standard (pas de valeur préexistante) ne me semble pas du tout propre.
J'aimerais donc savoir s'il y aurait une autre solution plus académique pour traiter ce cas.
D'autre part, est-il possible dans un bloc catch de traiter plusieurs types d'exception différents ( namingException, finderException et RemoteException); et si oui comment? parce que là aussi j'ai réduit à Exception tout court mais je ne le sens pas.
En m'excusant pour ces questions de nioubie maitrisant encore mal java et en remerciant d'avance ceux qui pourront me répondre ^^".
Outils/Normes utilisés : struts 1.1, ejb 2.0, jdev 10.0.2 avec OC4J (la version qui y est incluse)