Hibernate Filters
Posted by Anandhan Subbiah on Apr 3, 2008 in Java, Programming Concepts • No commentsHibernate filters provide you with a programmatic way to restrict the result of your query.The advantage is that you can programmatically change filters even though you can’t do it at runtime it is still a better approach. In the following code sample I created a filter called activatedFilter and added it to the User class. You can specify or define the attribute in the filter-def. In this case the filter is boolean. You can enable the filter using the session.enableFilter() API.
PUBLIC “-//Hibernate/Hibernate Mapping DTD//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
import org.hibernate.Filter;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class SimpleFilterExample {
public static void main (String args[]) {
SessionFactory factory =
new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
//insert the users
insertUser(”ray”,true,session);
insertUser(”jason”,true,session);
insertUser(”beth”,false,session);
insertUser(”judy”,false,session);
insertUser(”rob”,false,session);
//Show all users
System.out.println(”===ALL USERS===”);
displayUsers(session);
//Show activated users
Filter filter = session.enableFilter(”activatedFilter”);
filter.setParameter(”activatedParam”,new Boolean(true));
System.out.println(”===ACTIVATED USERS===”);
displayUsers(session);
//Show nonactivated users
filter.setParameter(”activatedParam”,new Boolean(false));
System.out.println(”===NON-ACTIVATED USERS===”);
displayUsers(session);
session.close();
}
public static void displayUsers(Session session) {
session.beginTransaction();
Query query = session.createQuery(”from User”);
Iterator results = query.iterate();
while (results.hasNext())
{
User user = (User) results.next();
System.out.print(user.getUsername() + ” is “);
if (user.isActivated())
{
System.out.println(”activated.”);
}
else
{
System.out.println(”not activated.”);
}
}
session.getTransaction().commit();
}
public static void insertUser(String name, boolean activated, Session session) {
session.beginTransaction();
User user = new User();
user.setUsername(name);
user.setActivated(activated);
session.save(user);
session.getTransaction().commit();
}
}
