Hibernate, select by id or unique column

Posted by Nican on Stack Overflow See other posts from Stack Overflow or by Nican
Published on 2010-06-17T03:18:14Z Indexed on 2010/06/17 3:23 UTC
Read the original article Hit count: 188

Filed under:
|
|
|
|

I am using hibernate for Java, and I want to be able to select users by id or by name from the database.

Nice thing about Hibernate is that it caches the result by id, but I seem to be unable to make it cache by name.

static Session openSession = Factory.openSession();

public static User GetUser(int Id) {
    return (User) openSession.get(User.class, new Integer(Id));
}

public static User GetUser( String Name ){
   return (User) openSession.createCriteria( User.class ).
           add( Restrictions.eq("username", Name) ).
           uniqueResult();

}

If I use GetUser(1) many times, hibernate will only show that it executed the first time.

But every time I use GetUser("user1"), hibernate shows that it is executing a new query to database.

What would be the best way to have the string identifier be cached also?

© Stack Overflow or respective owner

Related posts about java

Related posts about hibernate