Hibernate / Hibernate 7 Basics Interview Questions
What are named queries in Hibernate 7 and how are they type-safe with TypedQueryReference?
Named queries are pre-defined HQL/SQL queries. Hibernate 7 (Jakarta Persistence 3.2) adds TypedQueryReference for type-safe, compile-time references via the static metamodel.
@Entity @NamedQuery( name="Product.findByCategory", query="FROM Product p WHERE p.category = :category ORDER BY p.price ASC" ) public class Product { @Id private Long id; private String name; private String category; } // Traditional way (error-prone string reference): List<Product> p = session .createNamedQuery("Product.findByCategory", Product.class) .setParameter("category", "electronics") .getResultList(); // Typo in "Product.findByCategory" = runtime exception! // Jakarta Persistence 3.2 / Hibernate 7: // TypedQueryReference in static metamodel: // Product_: public static final TypedQueryReference<Product> QUERY_FIND_BY_CATEGORY; List<Product> p2 = session .createQuery(Product_.QUERY_FIND_BY_CATEGORY) // compile-time safe! .setParameter("category", "electronics") .getResultList(); // Renaming the named query = compile error, not runtime exception!
More Related questions...