【问题标题】:Hibernate Criteria Optimization休眠条件优化
【发布时间】:2015-03-10 17:10:14
【问题描述】:

我正在查看我们的一个应用程序中的旧代码,并发现了以下场景。

 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)如果是,那么有什么办法可以优化它吗?

【问题讨论】:

    标签: java hibernate hibernate-criteria


    【解决方案1】:

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

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

    查询缓存会返回employeeIds,二级缓存会返回Employee数据。

    【讨论】:

    • 我不想在缓存中配置它,我想修改查询来达到同样的效果。
    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2013-01-22
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2012-08-26
    • 2014-09-04
    相关资源
    最近更新 更多