IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ HibernateConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 63, dernière mise à jour : 17 mars 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

SommaireUtilisation (23)
précédent sommaire suivant
 

L'obtention d'une session Hibernate est très simple. Il faut tout d'abord créer une session factory :

Code java : Sélectionner tout
SessionFactory factory = new Configuration().configure().buildSessionFactory();

new Configuration().configure() charge tout simplement les paramètres de configuration d'Hibernate dans la classe. Ensuite, à partir de cette classe, on crée la factory.

Pour obtenir une session à partir de cette factory, il suffit d’appeler openSession :
Code java : Sélectionner tout
Session session = factory.openSession();

Vous disposez maintenant d'une session sur laquelle vous allez pouvoir travailler.

Mis à jour le 5 juin 2009 Baptiste Wicht

Pour sauvegarder une instance d'un objet que vous créez directement dans le code, il vous faut ensuite appeler la méthode save de la session pour que cet objet soit créé en base.

Code java : Sélectionner tout
1
2
3
4
5
Livre livre = new Livre(); 
livre.setTitle("Livre"); 
livre.setAuteur("Auteur"); 
  
session.save(livre);

Il ne faut pas oublier de committer les changements de la transaction via la méthode commit() :
Code java : Sélectionner tout
session.getTransaction().commit();

Mis à jour le 24 octobre 2006 Baptiste Wicht

Dans certains cas (un trigger qui modifie des données ou après l'exécution d'une requête directement sur le serveur (native)), les données qui sont dans votre objet ne sont plus à jour ; il vous faut donc les rafraîchir.

Pour cela, il vous faut employer la méthode refresh sur votre objet :

Code java : Sélectionner tout
session.refresh(votreObjet);

Mis à jour le 11 février 2008 Baptiste Wicht

En plus du HQL, vous pouvez aussi utiliser du SQL natif. Pour cela, il vous faut employer la méthode createSqlQuery de votre session.

Code java : Sélectionner tout
Query query = session.createSQLQuery("Requête en SQL natif");

Si c'est une requête de mise à jour, vous pouvez utiliser executeUpdate pour l'exécuter ou sinon, utiliser list() pour récupérer les résultats.

Mis à jour le 24 octobre 2006 Baptiste Wicht

Vous devez pour cela, employez un objet de type Blob. Pour créer un blob dans votre application, il vous suffit de faire :

Code java : Sélectionner tout
Blob blob = Hibernate.createBlob(inputStreamVersLeFichier);

Ensuite, vous pouvez le mettre comme tout autre objet dans une classe persistante et la sauver.

Il est évident que le champ dans le fichier de mapping doit être de type blob.

Mis à jour le 11 février 2008 Baptiste Wicht

La méthode save est là pour dire à Hibernate que cet objet va être sauvé, mais il faut encapsuler ces sauvegardes dans une transaction. Avant tout changement, il vous faut donc démarrer une transaction et committer cette transaction à la fin :

Code java : Sélectionner tout
1
2
3
4
5
Transaction tc = session.beginTransaction() ; 
  
//Différentes modifications 
  
tc.commit() ;

Ainsi, les changements seront répercutés dans la base de données.

Mis à jour le 28 octobre 2006 Baptiste Wicht

Une transaction est un objet qui définit une unité de travail atomique. Une transaction encapsule différentes opérations. On démarre une transaction par la session et pour valider les changements intervenus durant cette transaction, il faut procéder à un commit de celle-ci.

Mis à jour le 28 octobre 2006 Baptiste Wicht

save() va s'occuper de sauvegarder un objet qui n'est pas encore présent dans la base de données. saveOrUpdate(), quant à elle, va faire une vérification sur l'état de l'objet et en fonction de son état (transient, détaché ou persistant), elle va effectuer l'action correcte. Vous n'avez ainsi plus de problèmes pour savoir l'état de votre objet.

Mis à jour le 5 juin 2009 Baptiste Wicht

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.