This document provides an introduction to using the Hibernate Criteria API for building query objects programmatically. It demonstrates how to create a Criteria object from a Session, add restrictions and conditions, combine restrictions with logical operators, sort results, and perform aggregate functions and projections. The main advantage of the Criteria API over HQL is that it provides a cleaner, more object-oriented and type-safe approach to querying compared to plain HQL.