Well, if you want to retrieve a list of Entities matching some conditions you have somehow to do a query. Hibernate offers several ways do do this:
Option 1: Using the Hibernate Query Language. HQL is close to SQL except that you work on objects and associations rather than tables. HQL is also portable (SQL is generated depending on the Dialect). This is the traditional way to go.
Query q = session.createQuery("from foo Foo as foo where foo.name=:name");
q.setParameter("name", "bar");
List foos = q.list();
Option 2: Using the Criteria API. When using the Criteria API, you write queries using an object oriented API. This API is especially nice for dynamic queries. Criteria queries are also portable.
List cats = session.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.between("weight", minWeight, maxWeight) )
.list();
Option 3: Using Native SQL Queries. You usually use native SQL only if you want to utilize database-specific features.
List cats = session.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
I would probably use HQL in your case.
References