Hibernate和Spring整合中数据查询hql与Criteria Query

Hibernate和Spring整合中数据查询hql与Criteria Query

hql和Criteria Query是Hibernate中的2种查询封装,但有时适当的选择会有很大的执行效率
 1 public  List < Record >  getRecordsOrderByCreateTime(Date startDate, Date endDate)  {
 2        String hql = "from Record record order by record.createTime desc";
 3        List<Record> listRecord = getHibernateTemplate().find(hql);
 4        for(int i = 0; i < listRecord.size(); i++{
 5            if!(listRecord.get(i).getCreateTime().after(startDate) 
 6                    && listRecord.get(i).getCreateTime().before(endDate)) ) {
 7                listRecord.remove(i);
 8            }

 9        }

10        if(listRecord.size() == 0){
11            return null;
12        }

13        return listRecord;       
         }

上面用的是hql语句,没能找到什么好的hql语句,所以执行效率比较低

1 public  List < Record >  getRecordsOrderByCreateTime(Date startDate, Date endDate)  {
2        DetachedCriteria criteria = DetachedCriteria.forClass(Record.class);
3        criteria.add(Expression.ge("createTime", startDate));
4        criteria.add(Expression.le("createTime", endDate));
5        criteria.addOrder(Order.desc("createTime"));
6        List<Record> listRecord = getHibernateTemplate().findByCriteria(criteria);
7        if(listRecord.size() == 0){
8            return null;
9        }
            return listRecord;
        }

这个用的是 Criteria Query 由于里面直接封装了好多比较的方法,效率比较搞

你可能感兴趣的:(Hibernate和Spring整合中数据查询hql与Criteria Query)