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 :

Comment forcer la sauvegarde avec Hibernate?


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut Comment forcer la sauvegarde avec Hibernate?
    Bonjour,

    J'ai deux objets qui ont la relation père/fils, et dans les fichiers mapping j'ai déclaré cascade="save-update" pour sauvegarder le fils quand je sauve le père.

    Hibernate arrive bien à sauvegarder mes objets (père et fils) quand j'appelle session.save(pere). Par contre quand je regarde l'appel SQL que Hibernate a généré, je constate qu'il fait toujours un "select" sur l'objet fils avant de faire les "insert". Quelque part c'est logique qu'il a besoin de comparer l'enregistrement en base avec l'objet à sauver pour savoir ce qu'il faut mettre à jour en base. Mais comme le volume de mes objets père/fils est assez énorme, du coup ces "select" font perdre beaucoup de temps! Alors je voudrais savoir s'il y a moyen de forcer Hibernate à faire "insert" directement sans faire de "select" si je sais à l'avance que mes objets sont forcement nouveaux?
    Merci!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    D'après la documentation de référence d'Hibernate, l'horodatage ou version devrait répondre à tes attentes...

    Jette un œil

    A+

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Merci OButterlin pour ton aide!

    Finalement j'ai résolu mon problème en utilisant "unsaved-value=0" sur le champ Id de mon objet. Comme la valeur par défaut d'Id de mon objet est 0, du coup Hibernate sauvegarde mon nouveau objet en base sans faire de select sur mon objet.
    Par contre, au départ pour la génération de la valeur d'Id j'utilise un generator class=sequence, du coup Hibernate fait quand meme un "select nextval sequence" pour chaque nouvel objet, qui ne m'arrange pas vraiment au niveau de la performance!
    Donc finalement pour la génération des valeurs d'Id j'utilise un generator class=increment qui ne nécessite aucune opération "select" sur la base. (Mais attention, cette solution n'est pas applicable en multi-threads ou multi-clustering)

    Voilà, j'espère que ma solution pourra aider ceux qui rencontrent le même problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment échapper le caractère : avec hibernate ?
    Par ReiVon dans le forum Hibernate
    Réponses: 12
    Dernier message: 09/02/2009, 20h33
  2. Comment le type enum avec Hibernate
    Par 0coco0 dans le forum Langage
    Réponses: 1
    Dernier message: 27/08/2008, 13h54
  3. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  4. [Unit Testing] Comment s'y prendre avec Hibernate ?
    Par Wookai dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/06/2007, 11h10
  5. [C#]Comment forcer la sélection d'un noeud avec bouton droit
    Par irnbru dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/11/2005, 19h39

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