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

JPA Java Discussion :

Où faire mes contrôles avant persistence ?


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut Où faire mes contrôles avant persistence ?
    C'est peut-être une question bête mais je me la pose...

    En fait, dans toutes mes entités, je contrôle mes champs avant persistence en base dans ma fonction annotée @PrePersist et @PreUpdate !

    Exemple dans mon entité :
    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
    34
     
        @PrePersist
        @PreUpdate
        private void validateData() throws ValidationException {
     
            if (nom == null || "".equals(nom))
                throw new ValidationException("Nom invalide !");
     
            if ( codePostal == null || codePostal.length()<5 )
                throw new ValidationException("Code postal invalide ! Saisie à 5 chiffres !");
     
            try {
                int cp = Integer.parseInt(codePostal);
            } catch (Exception ex) {
                throw new ValidationException("Code postal invalide ! Saisie à 5 chiffres ");
            }
     
            if (ville == null || "".equals(ville))
                throw new ValidationException("Ville invalide !");
     
            if ( dateNaissance==null )
                throw new ValidationException("Date de naissance invalide !");
     
            Calendar c = new GregorianCalendar();
            c.setLenient(false);
     
            try {
                c.setTime(dateNaissance);
                c.getTime();
            } catch (IllegalArgumentException ex) {
                throw new ValidationException("Date de dateNaissance invalide !");
            }
     
        }
    Est-ce une bonne chose ou devrais-je remonter d'un niveau et faire ces contrôles dans le Session-bean ?

    Du genre :
    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
     
        public void create(Personne personne) throws ValidationException {
     
            //mes contrôles
            if (personne.getNom()== null || "".equals(personne.getNom()))
                throw new ValidationException("Nom invalide !");
     
            //etc...
     
            em = getEntityManager();
            try {
                em.create(personne);
            } catch (ValidationException ex) {
                throw ex;
            }
        }

    Un conseil ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 53
    Par défaut
    je pense que tu devrais faire les controles au niveau de la recuperation des donnees (au niveau de la vue) afin de mieux respecter le model MVC.

    Les controles effectues au niveau des methodes annotees PrePersist PreUpdate ... sont des contoles lies a la logique metier (la quantite commandee ne doit pas depasser un certain seuil, un produit ne peut etre ajoute que dans des conditions particulieres)

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Les controles dans le modele MVC doivent se limiter normalement entre la vue et ton controller :
    Coté Vue : selon le framework coté vue que tu utilises tu as des "required= true" à mettre dans tes composants (input Text etc...) sinon coté controlleur, le modele ne doit pas gérer les controles que je te vois effectuer en ce moment. Le modele ne gere vraiment que le metier.

Discussions similaires

  1. [VB.net] Où sont mes contrôles ?
    Par waici dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/01/2006, 09h15
  2. Comment faire un test avant un FieldByName().value = ... ?
    Par fredfred dans le forum Bases de données
    Réponses: 13
    Dernier message: 19/09/2005, 10h09
  3. [Struts] Où faire mes appels à la database sous Struts ?
    Par brousaille dans le forum Struts 1
    Réponses: 18
    Dernier message: 07/09/2005, 00h41
  4. [thunderbird] recuperer mes couriels avant un format
    Par mr-casimir dans le forum Thunderbird
    Réponses: 11
    Dernier message: 31/03/2005, 11h11
  5. Réponses: 9
    Dernier message: 24/05/2003, 10h25

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