States of object in hibernate
States of object (instance) in hibernate
Transient:The object is in transient state if it is just created but has no primary key (identifier) and not associated with session i.e. doesn’t represent any row of the database.
Persistent: It represent one row of the database and always associated with some unique hibernate session.
The object is in persistent state if session is open, and you just saved the instance in the database or retrieved the instance from the database.
Changes to persistent objects are tracked by hibernate and are saved into database when commit call happen.
Detached: Detached objects are those who were once persistent in past (object is in detached state if session is closed) and now they are no longer persistent.
After detached state, object comes to persistent state if we call lock() or update() or saveOrUpdate() method (reattach object to hibernate session).
If we want to move an object from persistent state into transient state then we need to delete that object permanently from the database.
If we want to move an object from persistent to detached state, we need to do either closing that session or need to clear the cache of the session.
If we want to move an object from persistent state into transient state then we need to delete that object permanently from the database.