Both HQL and Criteria API offer the same performance as both are executed as SQL in database side. And Hibernate use the same logic for both.
What extra benefit Criteria API offers over HQL is dynamic query building. You can think about your query in terms of Objects instead of SQL.
Here is notes from hibernate docs:
Quote:
HQL is extremely powerful but some developers prefer to build queries dynamically, using an object-oriented API, rather than building query strings. Hibernate provides an intuitive Criteria query API for these cases: