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

GWT et Vaadin Java Discussion :

Cohabitation de GWT et Hibernate - Proposition d'une solution


Sujet :

GWT et Vaadin Java

  1. #1
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut Cohabitation de GWT et Hibernate - Proposition d'une solution
    Bonjour,

    Un des principaux problèmes de l’implantation de GWT dans une application Web 3 tiers avec Hibernate semble être la gestion des bean (pojo, dto).

    J’ai réfléchi a une solution qui a l’air de fonctionner (je l’ai tester dans un petit développement) et je voudrai la proposer voir ce que vous en pensez.

    Voila, au lieu de développer des DTO et des pojo, je ne crée que des pojo (avec leur mapping Hibernate) et je les inclus dans la compilation de GWT. GWT va donc travailler avec ces même pojos.

    Pour les requêtes du client, il suffit que le serveur envoie ces pojos.
    Lors des retours des pojo vers le serveur, celui va d’abord les merger dans Hibernate (org.hibernate.Session.merge) et peut travailler avec ceux-ci en toute serenite.

    Remarques :

    • Les modifications du pojo faites par un autre utilisateur entre temps sont écrasées (mais le problème existe sans GWT, à moindre niveau).

    • Ceci n’est intéressant que pour les petites applications dont le schéma des pojo et des dto est le même, le principal avantage étant de ne pas développer les bean 2 fois (pojo et dto)

    Qu’en pensez-vous ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Au lazy près, oui, ça peut être très pratique d'avoir une section common avec tous les beans. Il suffit de ne remonter que les many-to-one, et de prevoir des appels pour filtrer les tables filles et ça peut être très fonctionnel.

    Avec un projet qui contiendrait donc des sections :

    /client
    /common
    /server

    et en n'oubliant pas d'ajouter au gwt.xml
    <source path="client"/>
    <source path="common"/>
    Pour que le common soit compilé aussi sur la partie cliente.

  3. #3
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    Oui effectivement j'avais oublié de préciser pour les Lazy.
    Grossière erreur de ma part.

    Ceci implique d'ailleurs que GWT effectuera lui même les requêtes pour remplir les champs que l'on ne souhait importer immédiatement sur le client.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Tu peux utiliser, ou t'inspirer d'outils existants comme :

    http://hibernate4gwt.sourceforge.net...t_problem.html

  5. #5
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    si tu n'utilises pas de DTO, fait attention à ce que tu envoie et à ce que tu recois. je sais que moi pour l'instant je fait le porc dans ma petite application:

    - je transfère des pojo du serveur vers le client, il y a des infos que le client n'est pas censé recevoir (des mails par exemple)

    - je recois des pojo du client que je sauve directement dans la base de données sans faire de vérification

  6. #6
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    Citation Envoyé par jogrey Voir le message
    Tu peux utiliser, ou t'inspirer d'outils existants comme :

    http://hibernate4gwt.sourceforge.net...t_problem.html
    Effectivement hibernate4gwt est assez intéressant mais, sauf erreur de ma part, l'utilisation de Dozer dans hibernate4gwt nous oblige a creer des pojo et des DTO?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Par défaut
    Oui la création de POJO et DTO est obligatoire.
    Je me suis essayé à hibernate4gwt et malgré le fait que cela fonctionne bien une fois en place j'ai trouvé l'utilisation relativement lourde.

    Aujourd'hui pour nos nouvelles applications, nous travaillons en mode déconnecter c'est à dire que le POJO existe coté client et coté serveur et que la communication entre les deux passent par des flux normalisés (XML, JSON)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut
    Bonjour,
    Je suis débutant en GWT (même en dev web)
    Pourriez-vous m'éclairé sur ses termes :
    - POJO
    - DTO

    De plus, auriez vous un exemple, tutorial d'une application réalisé en GWT / Hibernate en mode déconnecté et si possible sans hibernate 4GWT.

    Merci

  9. #9
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Citation Envoyé par repié Voir le message
    Pour les requêtes du client, il suffit que le serveur envoie ces pojos.
    J'ai du mal avec cette solution, car si elle à le mérite d'être simple (1 seule définition du domaine), elle tu peux transmettre plus d'information que réellement utile, ce qui est inefficace ou dangereux. En outre, comment gères-tu la navigation entre associations ?

  10. #10
    Membre éclairé

    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    Bonjour à tous,

    En tant qu'auteur d'Hibernate4Gwt (maintenant nommé Gilead, car la librairie supporte également l'envoi d'objet Hibernate vers Flex via BlazeDS), je me permet d'apporter quelques précisions :
    - h4gwt est basé sur beanlib et non Dozer. Cela signifie qu'aucune autre configuration n'est nécessaire (pas de fichier de mapping XML spécifique, ni de classes DTO)
    - La nouvelle version de la librairie inclue des annotations (@ServerOnly et @ReadOnly) pour maitriser les informations envoyées vers GWT. Cela évite notamment d'envoyer des informations confidentielles sur le réseau
    - Enfin, avec Hibernate4GWT/Gilead, vous n'envoyez sur le réseau que vous avez chargée. L'argument selon lequel "on ne sait pas ce que l'on envoie/on envoie plus de données que nécessaire" signifie que le code applicatif charge plus de données que nécessaire. Hibernate4GWT n'en est alors que le reflet.

    Personnellement, j'utilise la librairie sur mes projets professionnels, et le gain en simplicité et en productivité est sans appel...

    Bruno

Discussions similaires

  1. [Hibernate] mapping d'une collection
    Par Jorus dans le forum Hibernate
    Réponses: 22
    Dernier message: 01/12/2008, 17h16
  2. [Hibernate] - ClassCastException dans une requête
    Par charlot44 dans le forum Hibernate
    Réponses: 8
    Dernier message: 25/04/2008, 20h01
  3. Réponses: 19
    Dernier message: 30/05/2006, 18h43
  4. [Hibernate] Set avec une seule valeur
    Par neuromencien dans le forum Hibernate
    Réponses: 6
    Dernier message: 15/05/2006, 16h49
  5. [Hibernate] Tester si une base existe
    Par lilou77 dans le forum Hibernate
    Réponses: 8
    Dernier message: 25/10/2005, 14h29

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