Hibernate / Hibernate 7 Basics Interview Questions
What is the first-level cache (persistence context) in Hibernate 7?
The first-level cache is the per-Session in-memory cache for all entities loaded or persisted within an open Session. It is mandatory - every Session has its own first-level cache.
Session session = sf.openSession(); session.beginTransaction(); Product p1 = session.find(Product.class, 1L); // DB hit Product p2 = session.find(Product.class, 1L); // CACHE HIT - no SQL! Product p3 = session.find(Product.class, 1L); // CACHE HIT System.out.println(p1 == p2); // true! Same object reference // Evict specific entity: session.detach(p1); // p1 is now DETACHED Product p4 = session.find(Product.class, 1L); // DB hit again // Clear entire cache: session.clear(); // all entities become DETACHED // Bulk processing pattern (prevent OutOfMemoryError): for (int i = 0; i < 100_000; i++) { session.persist(products.get(i)); if (i % 50 == 0) { session.flush(); // write to DB session.clear(); // free cache memory } }
More Related questions...