IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

[EJB2.0]Vérifier inexistence d'un objet avant de le créer


Sujet :

Persistance des données Java

  1. #1
    Invité
    Invité(e)
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Dernière modification par Invité ; 18/04/2008 à 18h08.

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Helas, je ne sais pas la solution a ton probleme, mais...

    Tu as un erreur dans ta routine. Tu ecris: a.trim()==null. Ce n'est pas correct, parce que si a est null, l'essai pour appeler a.trim() sur null objet leverait NullPointerException, et si a n'est pas null, a.trim() n'est pas null, non plus. Alors, ton if est inutile. En fait, tu peux assurer que les arguments ne sont pas null comme ca: if(a==null|| ..., mais c'est inutile, parce que NullPointerException serait leve automatiquement en appelerant a.trim(), et tu peux assurer qu'ils ne sont pas blancs comme ca: if(a.trim().isEmpty()|| ..., ou if(a.trim().equals("")|| ..., et ca aurait un sens.

    Quant a catcher plusieurs types d'exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try{...}
    catch(Exception1 e){...}
    catch(Exception2 e){...}
    ...
    Et c'est une bonne idee de catcher chacun type d'Exception individuellement, et de thrower les types detailes. Les types utiles sont IllegalArgumentException et IllegalStateException. Aussi, tu ne dois pas declarer throws Exception ou throws IllegalArgumentException et les autres, parce qu'ils sont "unchecked exceptions": http://java.sun.com/docs/books/tutor...OrDeclare.html

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour tes réponses TPReal.

    Effectivement vu que je travaille sur une base très ancienne issue d'une base "fichiers plats", je me retrouve avec des champs remplis par des espaces.

    Je vais donc suivre ton conseil et utiliser IsEmpty.

    C'est parti pour les catchs!

Discussions similaires

  1. Vérifier taille d'un fichier avant upload
    Par Guillaume_Caldera dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/11/2009, 10h32
  2. Attentre la définition d'un objet avant de l'utiliser (onDefine?)
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/03/2009, 09h06
  3. Remoting: comment initialiser l'objet avant de le publier?
    Par Rodrigue dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 05/03/2008, 18h22
  4. Réponses: 2
    Dernier message: 03/02/2007, 09h51
  5. Script objet avant methode formulaire?
    Par le_gueux dans le forum 4D
    Réponses: 17
    Dernier message: 17/07/2006, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo