Hibernate est une solution de mapping objet/relationnel complète qui ne masque pas seulement au développpeur les détails du
système de gestion de base de données sous-jacent, mais offre aussi la gestion d'état des objets. C'est, contrairement à la gestion de statements
SQL dans les couches de persistance habituelles JDBC/SQL, une vue orientée objet très naturelle de la persistance dans les
applications Java.
En d'autres mots, les développeurs d'applications Hibernate devrait toujours réfléchir à l'état de leurs objets, et pas nécessairement à l'exécution des expressions SQL. Cette part est prise en charge pas Hibernate et seulement importante pour les développeurs d'applications lors du réglage de la performance de leur système.
Hibernate définit et comprend les états suivants :
Éphémère (NdT : transient) - un objet est éphémère s'il a juste été instancié en utilisant l'opérateur new
. Il n'a aucune représentation persistante dans la base de données et aucune valeur d'identifiant n'a été assignée. Les instances
éphémères seront détruites par le ramasse-miettes si l'application n'en conserve aucune référence. Utilisez la Session
d'Hibernate pour rendre un objet persistant (et laisser Hibernate s'occuper des expressions SQL qui ont besoin d'être exécutées
pour cette transistion).
Persistant - une instance persistante a une représentation dans la base de données et une valeur d'identifiant. Elle pourrait avoir
juste été sauvegardée ou chargée, pourtant, elle est par définition dans la portée d'une Session
. Hibernate détectera n'importe quels changements effectués sur un objet dans l'état persistant et synchronisera l'état avec
la base de données lors de la fin l'unité de travail. Les développeurs n'exécutent pas d'expressions UPDATE
ou DELETE
manuelles lorsqu'un objet devrait être rendu éphémère.
Détaché - une instance détachée est un objet qui a été persistant, mais dont sa Session
a été fermée. La référence à l'objet est encore valide, bien sûr, et l'instance détachée pourrait même être modifiée dans
cet état. Une instance détachée peut être réattachée à une nouvelle Session
plus tard dans le temps, la rendant (et toutes les modifications avec) de nouveau persistante. Cette fonctionnalité rend
possible un modèle de programmation pour de longues unités de travail qui requièrent un temps de réflexion de l'utilisateur.
Nous les appelons des conversations, c'est-à-dire une unité de travail du point de vue de l'utilisateur.
Nous alons maintenant dicuster des états et des transitions d'état (et des méthodes d'Hibernate qui déclenchent une transition) plus en détails.