Hibernate define estos 3 estados, en
los cuales los objetos se encuentran durante la ejecución de nuestra
aplicación:
- Transient: Un Objeto es transiente si fue instanciado con new y no con la session de hibernate. Este objeto no esta persistido y hibernate no lo conoce.
- Persistent: Un objeto persistido tiene una representación en la base de datos y un identificador. Este fue guardado o recuperado de la base de datos y se encuentra en el ámbito de la sesión de hibernate; quiere decir que hibernate conoce este objeto. Hibernate detecta los cambios en el objeto y sincroniza con el estado de la base de datos.
- Detached: Un objeto es detached cuando ha sido persistido pero la sesión de hibernate se cerro. La referencia al objeto es valida y puede ser re-atachada a otra sesión de hibernate, por ejemplo con el método saveOrUpdate.
En la siguiente imagen podemos ver como
es la transición entre estados de un objeto con hibernate: