简体   繁体   中英

Hibernate, select by id or unique column

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?

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM