JAVA行军

Good Luck

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

hql和Criteria Query是Hibernate中的2种查询封装,但有时适当的选择会有很大的执行效率
 1public 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语句,所以执行效率比较低

1public 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 由于里面直接封装了好多比较的方法,效率比较搞

posted on 2007-09-26 17:29 ILOVEYOU 阅读(3184) 评论(3)  编辑  收藏

评论

# re: Hibernate和Spring整合中数据查询hql与Criteria Query 2008-09-19 12:00 ssss

什么叫HQL你都不知。  回复  更多评论   

# re: Hibernate和Spring整合中数据查询hql与Criteria Query 2011-12-20 18:00 R+

你写的是什么啊,你会用HQL吗?

Criteria支持的hql也支持,hql支持的Criteria 也支持。
这两个玩意的写法是对应的。

HQL也有比较符号的。  回复  更多评论   

# re: Hibernate和Spring整合中数据查询hql与Criteria Query 2011-12-20 18:02 3045

Criteria的优势是拼装方便,HQL的话需要拼字符串 and 等连接符号有时候不好拼。但是Criteria能写的HQL也能写,反之亦然。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜