Java Hibernate准则优化

Java Hibernate准则优化,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我在浏览一个应用程序中的旧代码时,发现了下面的场景 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){ c

我在浏览一个应用程序中的旧代码时,发现了下面的场景

 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;
} 
public List getList(boolean-isTrue、字符串名、字符串empid)
{
条件=session.createCriteria(myType);
添加(Expression.eq(“name”,name));
if(isTrue&&empid!=null){
添加(Expression.eq(“id”,empid));
}
列表结果=criteria.List();
退货清单;
} 
该函数也被调用了两次,如下所示

List<T> employeeList = getList(true,name,empId);
if(employeeList.size()==0)
 employeeList = getList(false,name,null);
List employeeList=getList(true、name、empId);
如果(employeeList.size()==0)
employeeList=getList(false,name,null);
这种情况背后的原因是,有时候employeeId是不正确的。在这种情况下,我们只需要搜索员工姓名

我的怀疑

1) 如果我以这种方式执行,是否要查询数据库两次


2) 如果是,那么有什么方法可以优化它吗

在这种情况下,由于参数不同,Hibernate将执行两次查询

您可以配置查询缓存和二级缓存以提高性能


查询缓存将返回EmployeeID,二级缓存将返回员工数据。

我不想在缓存中配置它,我想修改查询以实现同样的效果。