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

Struts 1 Java Discussion :

Correspondance form-beans et bdd


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 3
    Par défaut Correspondance form-beans et bdd
    Hop là, sur les conseils de grégory je recrée une discussion pour cette question. Pour replacer le contexte, j'utilise Struts et Hibernate pour créer un logiciel de gestion de projet.

    Je récupère mes données avec hibernate et j'utilise ensuite mes form-beans pour manipuler ces données. Est ce correct de ne pas suivre la construction de ma base quand je crée mes forms-beans ?..
    Explication par un exemple :

    (Je précise l'exemple n'a aucun but logique)
    J'ai une table Employé et une table Tâche. Imaginons que j'ai besoin pour une action à la fois de certaines données de ma table Employé et de certaines données de ma table Tâche. Il me semble plus efficace d'avoir un bean regroupant des données choisies de la table employé et de la table tâche que d'avoir un bean employé et un bean tâche.
    En fait dis comme ça effectivement la réponse est oui mais j'ai peur que cela ne me crée beaucoup de form-beans spécifiques pour rien.
    Et puis créer un seul form-bean avec toutes les données dont j'ai besoin n'est pas non plus une solution.
    Est ce que finalement le mieux est de faire un compromis entre tout ça ? (oui je sais je réfléchis en écrivant :p)

    Bref qu'est ce qui vous semble le mieux ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Généralement on ne construit pas ses formBean en fonction de sa bdd, mais plutot en fonction du formulaire contenu dans la jsp.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Il faut bien distinguer la Vue (la jsp=>le formulaire associé=>l'ActionForm associé) du Modèle (la base de donnée=>la table associée=>les objets MOR Hibernate associées).... si tu veux respecter le modèle MVC.
    Il est important de créer un seul objet métier ... mais il faut créer autant d'ActionForm qu'il y a de jsp... même si ces ActionForm ont des caractéristiques communes... et sont plus/moins liées à l'objet métier.

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 3
    Par défaut
    ok donc si je comprends bien... si j'ai une jsp d'identification et une jsp qui contient mon applet et qui sera modifiée en fonction des actions de l'utilisateur, ça ne me fait que 2 beans. Un pour l'identification avec par exemple juste un username et un mdp et un pour ma page avec l'applet...sachant qu'il devrait contenir pas mal de propriétés. Et puis pour les construire j'utilise mes objets métiers comme je le sens

    J'ai bon ?

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 3
    Par défaut
    Bon finalement après retour au problème je ne suis pas sûr de ce que je dois faire. J'ai deux objets qui correspondent à mes tables de ma bdd : "Task" et "Comment". Une tache peut avoir plusieurs commentaires et un commentaire n'appartient qu'à une seule tâche. J'ai mappé tout ça sous hibernate après beaucoup de lutte :p et maintenant je me demande comment je vais faire pour transmettre tout ça à ma vue. J'ai déjà une autre classe "TaskForm" qui correspond au formulaire associé à certaines de mes actions et qui me permet de récupérer des données de ma table "Task". Cependant, maintenant il faut aussi que je récupére un set de mes comment qui sont liés à une tâche. Est ce que la meilleure solution est de recréer un form "CommentForm" que je remplis à l'exécution de mon action et que je met comme attribut de ma classe "TaskForm" ? Ca me parait un peu étrange parce que ça m'oblige à plus ou moins dupliquer la classe Comment qui correspond à une table de ma bdd

    Bref je suis un peu perdu, si vous pouviez m'éclairer

  6. #6
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    En effet les objets Bean (Hibernate) et les ActionForm doivent etre distingue
    car sinon tu crees un fort couplage a Struts pour tes acces aux donnees. Imagine qu'une application SWING veuille utiliser tes requetes Hibernates, l'application SWING devra inclure les librairies Struts (pour les ActionForm). De plus tu creer un fort couplage avec ton cas d'utilisation. Tu peux avoir un formulaire qui gère un utilisateur et un formulaire qui gere un utilisateur+roles.
    C'est à la couche service (je ne vais pas t'embrouiller avec ca) qui est appele dans l'Action qui doit faire l'assemblage Bean->Form et Form->Bean, autrement dit recuperer tes Bean Hibernate et mettre à jour le formulaire et inversement.

    Une ActionForm est une classse qui definit ton formulaire, autrement dit les champs saisissables par l'utilisateur. Si dans ton cas, tu dois afficher tes commentaires sans qu'il soit saisissable, tu mets dans ta request la liste des Comment et tu l'utilises ensuite dans ta JSP (tu n'a pas besoin de creer de CommentForm).

    Maintenant si tu veux que les commentaires (mon exemple suppose que tu as un libelle sur le commentaire) soient saisissable tu creer un getter
    dans ta TaskForm qui contient un tableau de String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] getCommentsLabel();
    Ce getter doit etre mis a jour dans ton load de ton action a l'aide des libelles des commentaires recupere d'Hibernate. Lorsque tu sauves ton formuliares tu recuperes les libelles de commentaires et tu construit ta liste des Bean Comment a laide de ce tableau de String.

    Si tu veux j'ai fait un schema de l'architecture que j'ai l'habitude d'utiliser en Struts Hibernate (et Spring). Peut etre que ca t'aidera a voir plus clair.

    Angelo

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/07/2007, 14h06
  2. Cannot retrieve definition for form bean:
    Par Baptiste Wicht dans le forum Struts 1
    Réponses: 11
    Dernier message: 10/10/2006, 19h27
  3. Réponses: 6
    Dernier message: 13/09/2006, 19h02
  4. [Forms-Bean] Exemple Map
    Par patmaba dans le forum Forms
    Réponses: 14
    Dernier message: 02/05/2006, 16h17
  5. Form Web avec mise en forme et stockage BdD
    Par jflebegue dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 14/10/2005, 09h32

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