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;
}

2

3

4

5

6

7

8

9

10

11

12

13

}
上面用的是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;
}

2

3

4

5

6

7

8

9

return listRecord;
}
這個用的是 Criteria Query 由于里面直接封裝了好多比較的方法,效率比較搞