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

Développement Web en Java Discussion :

Architecture d'application web


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut Architecture d'application web
    Je suis entrain de developper une application en J2EE et j'ai des problemes a propos de l'architecture, j'ai utilisé celci :

    Couche Web <--- DTO ---> Couche Metier <--- BO ---> Couche DAO

    Je me demande si cette architecture est correcte ?

    Si vous connaissez un exemple qui implémente cette architecture ou celle que vous pensez correct je suis pronneur.

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Je penses que la distinction DTO - BO n'est pas nécessaire.
    Tu peux simplement faire :
    WEB LAYER <-- dto --> BIZ LAYER <-- dto --> DAO LAYER
    En effet, les DTO (Data Transfer Object) sont, par définition, des objets destinés au transfert de données entre couches.
    Cette architecture offre une très bonne séparation des problèmes (je ne sais pas s'il en existe une meilleure).
    Je pense que la plupart des applications web respectent cette architecture.

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Donc vous pensez que je dois faire la transformation BO <-> DTO au niveau de la couche DAO, du fait que j'utilise Hibernate est je suis obligé d'utiliser les BO ?

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Peux tu s'il te plaît expliquer pourquoi un simple DTO ne te suffit du moment que tu utilises Hibernate ? Même dans les EJBs il est possible d'utiliser des simples POJOs comme DTOs avec JPA ...

  5. #5
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Non, ce n'est pas ça que je veux dire.
    Dans l'architecture que tu présentes, tu établis une distinction DTO - BO.
    Or, comme j'en ai déjà fais l'expérience en pratique, il n'y a pas vraiment de différence entre un DTO et un BO.
    La plupart du temps, les objets retournés par ta couche DAO seront utilisés tel quels par ta couche métier et ta couche web.

    A titre d'exemple, considérons une classe 'Chien'.
    Dans ton DAO, suppose que tu aies une méthode 'getChien(...)' qui te retourne une instance de la classe 'Chien'.
    Suppose qu'un utilisateur désire afficher le chien qui s'appelle Médor.
    Ta couche web va appeler la méthode 'getChien(...)' de ta couche métier.
    Ta couche métier va appeler la méthode 'getChien(...)' de ta couche DAO.
    Ta couche DAO va retourner une instance de la classe 'Chien'.
    Ta couche métier va retourner cette même instance de la classe 'Chien'.
    Ta couche web recevra cette instance de la classe 'Chien' et l'affichera à l'utilisateur.
    Dans cette exemple, tu vois bien que tu n'as pas besoin d'une classe ChienBO et d'une classe ChienDTO.

    Autrement dit, aucune transformation BO <-> DTO n'est nécessaire (puisque ce sont les mêmes objets).
    Je pense que BO et DTO ne sont que deux noms différents, utilisés dans des contextes différents, mais qui désignent en réalité la même chose.

  6. #6
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    J'ai déjà utilisé Hibernate et il ne nécessite pas d'utiliser des objets particuliers (juste des beans Java).
    Qu'entends-tu par BO et par DTO ?

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Désolé si j'ai envoyé plusieurs copie de mon message cela est du à un probleme dans mon OS.

    donc j'avais un petit probleme de nomination pour les BO.

    Donc si j'ai bien compris:
    Au niveau d'hibernate j'utilise des Beans, ensuite je les transforme en DTO dans la couche DAO.

  8. #8
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Pour faire simple : un bean Java est un objet Java avec des attributs privés et des getters/setters pour ces attributs.

    Via ta couche DAO, tu peux charger/insérer/mettre à jour/supprimer des beans dans ta DB.
    Dans ton cas, ta couche DAO est supportée par Hibernate, ce qui n'impacte en rien le type d'objets à utiliser (ce sont toujours des beans Java).

    Les beans Java manipulés par ta couche DAO peuvent être utilisés tel quels pour transférer des données entre les couches de ton application.

    Aucune conversion n'est donc nécessaire (ce que tu appelles BO et DTO sont en fait les mêmes objets!).

  9. #9
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Et bien tes DAOs sont justement batis juste au dessus d'Hibernate : Hibernate travaille sur les POJOs, de même pour tes DAOs. les unités de communications sont les DTOs qui eux sont des POJOs.

    Bref, il existe déjà de nombreux posts sur ce thème, je te propose celui ci :
    http://www.developpez.net/forums/sho...d.php?t=341618.

    Il traite de Struts, mais l'idée est là !

    Bonne chance.

  10. #10
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Essayons d'aller pas à pas, et je suis désolé si je vous dérranges :

    Hibernate récupére les données a partir de BD via des beans (POJO), ces meme instance je ne doit pas les laisser propager jusqu'a la couche metier (c'est pas trés sécurisé du fait que hibernate les surveilles) donc je doit faire une transformation vers des DTO au niveau de la couche DAO.

    Bon je ne vais pas m'interesser a ce probleme de sécurité dans la 1ere itération.

    Merci

Discussions similaires

  1. Architecture pour application web
    Par frankbe dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 20/12/2011, 15h15
  2. Architecture d'application web
    Par owsion dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 09/10/2009, 07h48
  3. Réponses: 3
    Dernier message: 18/03/2008, 09h45
  4. Architecture application web
    Par bach58 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 17/09/2007, 09h26
  5. Architecture d'une application Web
    Par le Daoud dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 05/10/2006, 11h39

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