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 :

Question : persistance des données


Sujet :

Hibernate Java

  1. #1
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 355
    Points
    355
    Par défaut Question : persistance des données
    Salut a tous,

    je travaille actuellement sur une appli utilisant hibernate. Pour le moment, hibernate me permet de soulager de tout le travail de requetes sql. Mais je pense que l'on doit pouvoir aller plus loin.

    Par exemple, dans mon application je construit un tableau dans lequel j'insere des cellules dont les données sont récupérées dans ma base.

    Ensuite, je peut sélectionner une cellule et en modifier le contenu.

    Pour le moment, voila ce qui se passe:
    1) je sélectionne ma cellule
    2) je modifie la cellule dans ma base
    et je recommence pour les autres cellules...

    N'est-il pas possible grâce à hibernate de suivre un schéma du genre:
    1 : initialisation de l'appli, chargements des objets métiers
    2 : création / modification en travaillant en mémoire avec les objets métiers
    3 : commit des objets métiers en mémoire

    Merci d'avance (n'hésitez pas s'il vous faut plus d'infos).

  2. #2
    Membre actif Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 257
    Points
    257
    Par défaut
    Tu peux effectivement travailler en mémoire avec Hibernate (c-a-d sur la session Hibernate autrement appelée cache de 1er niveau) et n'impacter tes modifs qu'à la fin (en une fois). De plus ça permet de traiter tes modifs en une seule transaction (mais en fonction du contexte ça peut être un avantage ou un inconvénient)

    Quand tu travailles en mise à jour avec Hibernate (delete, save, update) tu travailles d'abord en mémoire (dans la session) et c'est l'ordre de flush (ou le commit) qui va déclencher les ordres de MAJ en base de données.
    A priori tu peux faire ça de 2 manières :
    • [le plus simple] tu propages ta session Hibernate avec tous tes objets modifiés durant ta navigation (cf paragraphe 11.3.2. de la doc de référence Hibernate pour inspiration.
    • [si jamais tu n'as pas la main sur l'ouverture/fermeture des sessions Hibernate] tu propages tes objets en cours de modification durant ta navigation ; ils seront considérés comme détachés et, lors de la validation finale (qui va lancer les MAJ), tu les "ré-attaches" à la session (par update ou merge, cf paragraphes 10.6 et 11.3.3 de la doc de référence Hibernate) pour pouvoir lancer le flush (+ commit).
    Par contre, pour que l'une de ces 2 solutions puisse marcher, tu ne dois utiliser une transaction qu'à la fin de ton traitement (lors de la validation finale puisque c'est à ce moment là que vont se faire les modifs) avant ça, il ne faut surtout pas qu'il y ait de déclenchement de commit.

    En général à ce genre de cas se greffe le problème du verrouillage des données (optimiste ou pessimiste) pour garantir que tes données ne sont pas modifiées par quelqu'un d'autres en même temps que toi.

Discussions similaires

  1. Persistance des données
    Par gdnico dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 16/05/2007, 17h31
  2. Question traitement des données (Question générale)
    Par aikinhdo dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2007, 10h35
  3. Réponses: 2
    Dernier message: 19/04/2007, 16h59
  4. Persistance des données en mémoire
    Par giviz dans le forum Architecture
    Réponses: 13
    Dernier message: 21/12/2004, 09h44
  5. [Strategie]persistance des données
    Par altropus dans le forum Persistance des données
    Réponses: 6
    Dernier message: 04/11/2004, 04h36

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