Оптимизация критериев гибернации

1

Я просматривал старый код в одном из наших приложений и нашел следующий сценарий.

 public <T> List<T> getList(boolean isTrue,String name,String empid)
 {
  Criteria criteria = session.createCriteria(myType);
  criteria.add(Expression.eq("name",name)) ;
  if(isTrue&&empid!=null){
     criteria.add(Expression.eq("id",empid)) ;
  }
  List<T> result = criteria.list();
  return list;
} 

Также функция называется двух раз, как показано ниже.

List<T> employeeList = getList(true,name,empId);
if(employeeList.size()==0)
 employeeList = getList(false,name,null);

Причина этого сценария в том, что иногда employeeId не будет правильным. В этом случае нам нужно выполнить поиск только по имени сотрудника.

Мои сомнения.

1) Если я выполняю его таким образом, я дважды запрашиваю базу данных?

2) Если да, то можно ли его оптимизировать?

Теги:
hibernate
hibernate-criteria

1 ответ

0

В этом случае Hibernate выполнит запрос дважды, поскольку параметры являются разными.

Вы можете настроить кеш запросов и кеш второго уровня для повышения производительности.

Кэш запросов вернет employeeIds, а кеш второго уровня вернет данные Employee.

  • 0
    Я не хочу настраивать его в кеше, я хочу изменить запрос для достижения того же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню