Hibernate QBC(query by criteria)允許你在運行時通過包裝一個標準的對象來構建查詢。這種方式可以允許你動態的指定一些約束,但是同時它也喪失了HQL的一些易用性。從另一方面說,通過Criteria構建的查詢的可讀性比HQL更差。
一個Criteria是一組Criterion實例組成的樹。Express類提供了靜態的工廠類方法來返回Criterion實例。一個這個樹被建立字號後,它就在數據庫中執行查詢。
許多開發者選擇QBC,因爲他們認爲這是一種更加面向對象的方式。他們也更加欣賞QBC能夠在運行時候進行解析和驗證,而HQL並不能在運行時解析。
Hibernate Criteria API的一個優勢在於它是一個Criterion框架。它允許用戶進行擴展。