Я использую hibernate для Java и хочу иметь возможность выбирать пользователей по идентификатору или по имени из базы данных.
Приятной особенностью Hibernate является то, что он кэширует результат по id, но я, похоже, не могу сделать его кешированным по имени.
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();
}
Если я использую GetUser (1) много раз, hibernate покажет только то, что он выполнен в первый раз.
Но каждый раз, когда я использую GetUser ("user1"), hibernate показывает, что он выполняет новый запрос к базе данных.
Каков наилучший способ кэширования строкового идентификатора?