Hibernate, select by id or unique column

10,995

You need to use the query cache to avoid the database access when querying by name.

http://www.javalobby.org/java/forums/t48846.html

Share:
10,995
Nican
Author by

Nican

Updated on June 05, 2022

Comments

  • Nican
    Nican almost 2 years

    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?