Hibernate / Hibernate 7 Basics Interview Questions
What is pessimistic locking in Hibernate 7 and what are the improvements?
Pessimistic locking acquires a DB-level lock on a row when loaded. Hibernate 7 improves this with the Timeouts API from Jakarta Persistence 3.2.
// PESSIMISTIC_WRITE: SELECT ... FOR UPDATE Product p = session.find(Product.class, id, LockModeType.PESSIMISTIC_WRITE); // Hibernate 7: Timeouts API import jakarta.persistence.Timeouts; // Fail immediately if lock unavailable: Product p2 = session.find(Product.class, id, LockModeType.PESSIMISTIC_WRITE, Timeouts.NO_WAIT); // Wait up to 5 seconds: Product p3 = session.find(Product.class, id, LockModeType.PESSIMISTIC_WRITE, Timeouts.of(5, TimeUnit.SECONDS)); // Lock an already-managed entity: session.lock(managed, LockModeType.PESSIMISTIC_WRITE, Timeouts.NO_WAIT); // Lock modes: // PESSIMISTIC_READ -> SELECT FOR SHARE // PESSIMISTIC_WRITE -> SELECT FOR UPDATE
More Related questions...