Saltar la navegación

5.7. Sesiones y estados de los objetos persistentes

Hibernate define y soporta los siguientes estados de objeto:

Diagrama de estados

  • Transitorio (Transient): Un objeto estará en estado Transitorio cuando acaba de ser creado en Java mediante el operador new. Es decir cuando esté recién creado por nosotros. Este estado tiene la característica de que hibernate no sabe nada de nuestro objeto. Quizás el objeto ya este guardado en base de datos o sea nuevo y tengamos que insertarlo.
  • Persistente (Persistent): Un objeto estará en estado Persistente cuando ya está guardado en la base de datos y además Hibernate también es consciente de ello. Fíjese la diferencia con el estado anterior en el que el objeto podía estar persistente pero Hibernate lo desconocía. Hibernate en ese caso guarda el objeto en la cache interna que posee. También es importante destacar que para una misma fila de la base de datos sólo puede haber un único objeto en estado Persistente.
  • Separado (Detached): Este estado es similar al estado Transitorio sólo que se produce cuando cerramos la sesión mediante Session.close() o llamamos al método Session.evict(Object objeto) para el objeto que queremos pasar a este estado. En ese caso Hibernate vuelve a olvidar en qué estado se encontraban los objetos borrándolo de su cache interna.
  • Borrado (Removed): A este estado pasan los objetos que se han borrado de la base de datos mediante el método delete().