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

Hibernate Java Discussion :

Quelle stratégie pour coupler Hibernate et Swing ?


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut Quelle stratégie pour coupler Hibernate et Swing ?
    Bonjour,

    Je suis déséspérement à la recherche d'expériences concernant l'utilisation d'Hibernate dans une application 2/tiers (Swing).

    Ma problématique

    J'ai un graphe d'objets très complexe et relativement volumineux.

    Je projette aujourd'hui d'utiliser la Session-Per-Transaction sur une couche Dao (Pattern Dao). Le problème que je rencontre (comme apparement beaucoup d'autres) concerne le lazy-loading. J'ai besoin de l'utiliser pour eviter une saturation memoire lors du parcours profond du graphe.

    Dans l'absolu, j'aimerais pouvoir créer un proxy dynamique sur mes entités afin d'ouvrir la session On-Demand et rattacher mon entité détachée mais je n'ai aucune piste plausible pour son implémentation (trop d'entités).
    Ma première démarche avait été de m'orienter vers l'utilisation d'AOP afin de créer des pointcuts sur mes lazy-properties.

    1/ AOP pourrait il me sauver ?
    2/ Si oui, dois-je impérativement me tourner vers Spring-AOP pour esperer reussir ou existe-t-il une implémentation plus simple ?
    3/ Serait-il tout de même plus interressant d'utiliser la Session-Per-Application en la flushant régulièrement ?
    4/ En utilisant DAO, dois-je envisager une stratégie de chargement par cas d'utilisation (methode rencontré dans plusieurs forums) ce qui entrainerait un alourdissement de ma Dao ?
    5/ Existe-t-il dans l'API hibernate un système Observer afin d'intercepter la lazy Exception et rattacher mon objet avant un nouvel essai ?
    6/ Si non, existe-t-il une solution similaire ThirdParty dont je n'aurais pas connaissance ?
    7/ Existe-t-il une autre méthode plus judicieuse ?

    Merci à tous pour votre aide future.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Difficile de répondre sans avoir une idée plus précise de ton application.
    Je vais juste te donner l'exemple d'une application Hibernate Swing sur laquelle j'ai bossé.
    J'ai utilisé le pattern Session-Per-Transaction avec du lazy-loading.
    Quand j'ai besoin de charger des donnés lazy, j'appelle un service qui me charge les données dont j'ai besoin.
    Ca me fait du coup, pas mal de services différents, qui chargent les différentes données via des requêtes HQL en fetch join.
    Donc au final, rien d'exceptionnel.
    Mes objets swing ont un model qui contient les données, que j'ai juste à mettre à jour via Hibernate en fonction des besoins.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Merci,

    C'est ce que j'utilise aussi.
    Ton graphe est il complexe ? As tu des pb de perf ?

    Actuellement c'est la seule solution que je maitrise mais elle me coute cher en temps et en maintenance.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je n'ai pas de problèmes de perfs mais je n'ai pas un modèle complexe ni beaucoup de données.
    Cependant, je pense que ça devrait se comporter pas trop mal avec plus de données.

  5. #5
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    Salut,

    Je n'ai pas bien saisi quel était ton problème !
    est-ce de gérer correctement les Lazy Initialization Exception ou d'optimiser la quantité d'objets chargés en session ?

    sinon :
    1-2) peux-tu donner plus de précision stp ?
    3) le fait de flusher la session ne va pas résoudre ton problème de mémoire. A mon avis seuls session.clear et session.evict peuvent le faire.
    4) oui c'est l'inconvénient (de l'avantage!) du Pattern Facade (et non Dao). Le Pattern Command serait sans doute plus adapté à ce cas.
    5) pas à ma connaissance. De plus cela impliquerait probablement une réouverture de session à chaque fois qu'une Lazy Initialization serait interceptée -> bof

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Merci.

    Mon problème est clair : délimiter les transactions n'est pas envisageable étant donné la portée de mon graphe d'objets et l'aspect dynamique de mon interface qui offre à l'utilisateur le maximum de souplesse.
    Je cherche la meilleure conception me permettant de délimiter ces transactions de la manière la plus automatique possible.

    Existe-t-il une strategie de gestion de la Lazy Intialisation Exception appropriée ?

    3) faute d'emploi, faute de frappe :-)
    4) Commande ? Aurais-tu un exemple de son application simple dans la gestion du DAO car j'ai du mal à saisir quel serait l'avantage de son utilisation ?
    5) Quel est le cout de cette ouverture ? Ne fait elle pas que prendre une connexion ouverte dans mon pool ? N'est pas ce que produit une implementation orienté Web via Interceptor ?

    Merci de m'aider dans ma démarche.

Discussions similaires

  1. [Débutant] Quelle stratégie pour mon projet ?
    Par patguits dans le forum Services Web
    Réponses: 0
    Dernier message: 09/09/2013, 13h49
  2. [Généralités] Quelle stratégie pour la modification de structure ?
    Par cladoo dans le forum WinDev
    Réponses: 9
    Dernier message: 22/05/2013, 10h07
  3. Réponses: 3
    Dernier message: 23/05/2011, 10h39
  4. Quelle stratégie pour l'authentification ?
    Par Invité dans le forum Struts 1
    Réponses: 8
    Dernier message: 19/02/2008, 15h29
  5. Réponses: 4
    Dernier message: 04/04/2006, 19h19

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