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

Java EE Discussion :

interaction EJB avec vue/controleur


Sujet :

Java EE

  1. #1
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut interaction EJB avec vue/controleur
    Salut,

    Je me pose une question concernant les EJB par rapport aux JSP/Servlet.

    Dans les EJB session façade, on voit souvent, par exemple, des méthodes add(MonEJB ejb), remove(MonEJB ejb) et autres.
    N'a-t-on pas besoin de remove(int id) (où le paramètre est la primary key de MonEJB)?

    En effet, supposons une page JSP avec un formulaire qui affiche la liste des MonEJB, avec la possibilité d'en sélectionner un, pour le supprimer.

    Lorsque cette JSP passe un paramètre à la servlet contrôleur, elle lui passe l'id de MonEJB (sous forme de String), la servlet fait ainsi un maFacade.remove(Integer.parseInt(id)).

    Ne pas mettre la méthode remove(int id) obligerait à faire un findByPrimaryKey auparavant pour récupérer une instance de MonEJB, et ainsi pouvoir la supprimer...

    Est-ce que c'est correct de passer à la JSP directement les id de la base de données, ou il faut faire autrement?

    Plus généralement, comment gérer cela élégamment?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    en faite la réponse se trouve dans ton post.

    tu dit ceci :
    "En effet, supposons une page JSP avec un formulaire qui affiche la liste des MonEJB"
    ici tu as donc une liste avec tous les objets ?

    et comme ton objet 'MonEJB' est identifié que par son ID, normalement c'est déclarer dans ton EntityBean.
    Si tu veux en être certain, test ceci 'MonEJB.String();' et tu vas voir qu'il retourne son ID.

    Si c'est pas ce que tu demandais, excuse moi de m'être trompé.

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par martel
    en faite la réponse se trouve dans ton post.

    tu dit ceci :
    "En effet, supposons une page JSP avec un formulaire qui affiche la liste des MonEJB"
    ici tu as donc une liste avec tous les objets ?
    Oui, il contient la liste des MonEJB, sous la forme par exemple List<MonEJB>.

    Citation Envoyé par martel
    et comme ton objet 'MonEJB' est identifié que par son ID, normalement c'est déclarer dans ton EntityBean.
    Ca d'accord, mais est-il possible de ne pas manipuler du tout les id mappés en base de données et d'être dans un modèle (apparent) totalement objet, n'utilisant que des références java.

    Car par exemple, le truc qui vient à l'esprit pour supprimer une liste de magasins, c'est de faire un appel à /SupprimerMagasin?ids=1,3,6,7,10. Mais côté servlet ça oblige, si on veut manipuler les objets associés, à faire un findByPrimaryKey pr les supprimer (si on n'utilise que remove(Store st) et non remove(int id).

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Tu peux travailler dans les divers couches avec des objets différents, dans du code JSP tu peux par exemple accédé à tes ValueObject qui contiennent eux des Entity composés

    Ca complexifie le code de faire appel à du code BU (ici un session bean) que et de devoir faire une transformation de value objet à un entity alors que l id est le meme

    je sais pas si j ai été clair ...

    Exemple :

    Tu travailles dans ta couche présentation avec un valueobject composé de Person, Adress ou une personne possède une adresse. Tu proposes un service (une facade) avec les méthodes CRUD tradititionel, tu invoques donc cette méthode /ce service uniquement avec un identifiant

    Le data model ne serait pas respecté car ce que tu voudrais c'est updaté ton value object spéficique (qui est déterminé dans ton presentation layer (je déconseille mais je prend en compte ton exemple)

    Je pense pas que je sois plus clair, mais ca me parrait tellement limpide ...

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par *alexandre*
    Tu peux travailler dans les divers couches avec des objets différents, dans du code JSP tu peux par exemple accédé à tes ValueObject qui contiennent eux des Entity composés

    Ca complexifie le code de faire appel à du code BU (ici un session bean) que et de devoir faire une transformation de value objet à un entity alors que l id est le meme

    je sais pas si j ai été clair ...
    Je n'ai pas trop compris o_O

    Passer à partir des Servlets des Object vers la jsp, et que la jsp l'affiche, là pas de problème.

    Le problème est d'utiliser ces Object (ici mes Store) dans une liste, et pouvoir les identifier dans un formulaire, de manière indépendante avec l'id de la base de données.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    J ai édité mais je doute que ca soit plus clair pour toi

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Non, ça n'est pas beaucoup plus clair pour moi


    En fait, je me suis dit, pour ne pas utiliser du tout les id, il y a un moyen (mais c'est un peu lourd):

    La servlet récupère une List<Store> en faisant getAllStores() sur la StoreFacade.
    Elle met cette List<Store> dans la session (session.setAttribute("lesstores",maliste)).
    Dans la JSP, pour faire un checkbox à chaque magasin, on peut utiliser l'index du magasin dans cette liste pour l'attribut value de la checkbox, au lieu d'utiliser l'id du magasin.
    Quand le formulaire JSP est validé, la servlet peut récupérer la liste des magasins stockée dans la session, elle récupère aussi les indices sélectionnés dans la servlet, et donc peut appeler StoreFacade#removeStore(maliste.get(index)).

    Avec ceci plus du tout besoin d'id.

    Le problème, c'est que ça oblige à passer la liste en session, alors qu'elle ne devrait avoir qu'une visibilité "request".

    Qu'en pensez-vous?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    Bizarre l'envie d'enlever l'id, c'est plus simple avec l'id, car avec ton systeme non seulement tu joues avec l'id mais en plus tu joues avec un indice sur lequel tu comptes récupérer ton magasin dans la liste ? si j'ai bien compris.

Discussions similaires

  1. [Débutant] Modèle Vues Controleurs avec C#
    Par Awery2 dans le forum C#
    Réponses: 4
    Dernier message: 22/10/2014, 14h52
  2. [Débutant] génération d'un EJB avec GenIc
    Par Stessy dans le forum JOnAS
    Réponses: 65
    Dernier message: 31/01/2005, 10h50
  3. Réponses: 4
    Dernier message: 20/07/2004, 21h53
  4. [Ant] [Ejb] Probléme de création d'ejb avec Genic
    Par rivierem dans le forum JOnAS
    Réponses: 7
    Dernier message: 25/06/2004, 16h21
  5. [JSP][Servlet][Javabean] Modèle Vue Controleur
    Par ay_pepito dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/02/2004, 10h05

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