Hibernate / Hibernate 7 Basics Interview Questions
What is the biggest breaking change in Hibernate 7: detached entity reassociation removal?
The most impactful breaking change in Hibernate 7 is the complete removal of detached entity reassociation. Methods like session.update(), session.saveOrUpdate(), and session.lock() on detached entities are removed.
| Removed method | Replacement |
|---|---|
| session.update(entity) | session.merge(entity) |
| session.saveOrUpdate(entity) | session.merge(entity) |
| session.lock(entity, LockMode) | Load fresh: session.find(Class, id, LockMode) |
| session.refresh(detached) | Only allowed on managed entities |
| hibernate.allow_refresh_detached_entity property | Removed entirely |
// Hibernate 6 (worked but deprecated): session.update(detachedProduct); // REMOVED in Hibernate 7! // Hibernate 7 - use merge(): Product managed = session.merge(detachedProduct); managed.setPrice(new BigDecimal("50")); // modify managed copy session.getTransaction().commit(); // Adding detached child to managed parent: // WRONG in Hibernate 7: parent.addChild(detachedChild); // throws EntityExistsException at flush! // CORRECT: Child managedChild = session.merge(detachedChild); parent.addChild(managedChild);
More Related questions...