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

Servlets/JSP Java Discussion :

une seule interface DAO pour plusieurs beans


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 217
    Points : 113
    Points
    113
    Par défaut une seule interface DAO pour plusieurs beans
    Bonjour les amis,

    j'utilise le pattern DAO dans mon application, cependant j'ai actuellement 13 beans, si j'applique la règle

    pour chaque bean j'aurais une interface pour les méthode CRUD, et une classe implémentant cette interface (26 fichiers )

    Ainsi je retrouve pratiquement les mêmes codes pour les méthode CRUD au sein des mes interfaces et implémentation.

    je voudrais savoir ainsi s'il est possible de faire une seule interface de ce 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
    import java.util.List;
     
    public interface beanDAO {
     
    	void create( Object o ) throws DAOException;
     
    	Object find( Long id ) throws DAOException;
     
    	List<Object> getBeansList() throws DAOException;//Liste des beans
     
    	void update(Object o, Long id) throws DAOException;
     
    	void delete(Long id) throws DAOException;
     
    }
    et lors de l’implémentation je fais quelque chose 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
    import applicationrequete.requete;
     
    if(object instanceof beanA){
     
         requeteCorespondant=requete.requeteDuBeanA;
     
        ......
     
        ........
     
        le autres traitements
     
    }

    pour éviter la redondance de cette partie du code ??

    Merci de votre aide

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par Xeuch Voir le message
    je voudrais savoir ainsi s'il est possible de faire une seule interface de ce genre :
    Oui, bien sûr
    Citation Envoyé par Xeuch Voir le message
    et lors de l’implémentation je fais quelque chose du genre :
    Euh non là surtout pas, instanceof c'est le maaaal

    Regarde de ce côté http://www.adam-bien.com/roller/abie...ervice_aka_dao pour un exemple de DAO générique...

    Bien sûr, à adapter si tu n'es pas en jpa
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Bonsoir,

    sur mon PoC sur le framework Play j'utilise une seule classe de DAO dans laquelle j'injecte le nom de la classe à utiliser et les paramètres nécessaire.

    Du coup quand tu as besoin d'accéder à ta BDD tu n'as qu'une dépendance à injecter.

    Et du coup quand tu fais tes tests unitaires tu n'as que cette dépendance à mocker (pour la DAO du moins) et les méthodes utilisées à redéfinir.

    J'ai étendu le principe pour avoir des services génériques pour les cas usuels de crud.

    C'est grosso modo la même chose que le lien donné par Pill_S sauf que c'est bibi qui l'a fait
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

Discussions similaires

  1. Netasq : Gérer plusieurs @IP sur une seule interface
    Par Albator84 dans le forum Sécurité
    Réponses: 13
    Dernier message: 12/06/2012, 15h17
  2. Comment accéder à plusieurs comptes à partir d'une seule interface
    Par phplover_2010 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 21/07/2010, 11h57
  3. [MySQL] php: une seule connexion bdd pour plusieurs pages
    Par hammag dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/04/2009, 15h28
  4. [Débutant] comment afficher plusieurs images dans une seule interface ?
    Par youssa81 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/02/2009, 00h36
  5. Réponses: 12
    Dernier message: 16/05/2006, 17h47

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