stateDiagram-v2 [*] --> Transient Transient --> Persistent : session.save() Persistent --> Detached : session.close() Persistent --> Removed : session.delete() Detached --> Persistent : session.update() Removed --> [*] state Persistent { [*] --> Loaded Loaded --> Modified : setter methods Modified --> Flushed : session.flush() Flushed --> Loaded }
// CreateSession session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user = new User("john_doe", "john@example.com");session.save(user);tx.commit();session.close(); // ReadUser user = session.get(User.class, 1L); // Immediate loadUser user = session.load(User.class, 1L); // Proxy, lazy load // Updatesession.update(user); // For detached objects// For persistent objects, changes are automatically detected // Deletesession.delete(user);