hibernatehibernate-criterianhibernate-projections

When to use Hibernate projections?


I am a little confused about Hibernate's projections and criteria. When to use projections and when to use criteria?


Solution

  • They're not mutually exclusive, you can use both at the same time. Projections are generally used in the context of some Criteria.

    To put it simple, Hibernate Projections are used in order to query only a subset of the attributes of an entity or group of entities you're querying with Criteria. You can also use Projections to specify distinct clauses and aggregate functions like max, sum and so on. It's like referring to which data you're fetching. Like modifying the select clause in an SQL query.

    Hibernate Criteria are used to define conditions the data has to satisfy in order to be selected. It's like referring to how is the data you're fetching. Like modifiying the from and where clauses of an SQL query.

    Note that this how and which is not strictly true, it's just an orientation aimed to aid the OP. You can change which data you're fetching with createCriteria(String associationPath) for instance.

    I'd suggest to take a look at this article Hibernate: Criteria Queries in Depth