|
getHibernateTemplate().executeFind,session.createQuery,getHibernateTemplate().findByCriteria各有什么区别,哪个效率更好 ///////////////////////////第一种实现方式
public Entry getPreviousEntry(final String id) {
List entries = getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Entry entry where entry.postTime>(select current.postTime from Entry current where current.id=:id) and entry.entryStatus=:entryStatus and entry.type=:type order by entry.postTime asc");
query.setParameter("id", id);
query.setParameter("entryStatus", Entry.EntryStatus.PUBLISH);
query.setParameter("type", Entry.Type.POST);
query.setMaxResults(1);
return query.list();
}});
if(entries.isEmpty())
return null;
else
return (Entry)entries.get(0);
}
///////////////////////////第二种实现方式
public Entry getPreviousEntry(final String id) {
Query query = session.createQuery("from Entry entry where entry.postTime>(select current.postTime from Entry current where current.id=:id) and entry.entryStatus=:entryStatus and entry.type=:type order by entry.postTime asc");
query.setParameter("id", id);
query.setParameter("entryStatus", Entry.EntryStatus.PUBLISH);
query.setParameter("type", Entry.Type.POST);
query.setMaxResults(1);
Entry entry=null;
if(query1.iterate().hasNext())
entry=(Entry)query.iterate().next()
return entry;
}
这两种实现方式都能取得Entry ,第一种用了回调函数,第二种没有用,它们在功能和效率上有什么区别?哪个更好?
补充:
///////////////////////////第三种实现方式
public Entry getEntryByName(String name) {
DetachedCriteria criteria = DetachedCriteria.forClass(Entry.class);
criteria.add(Restrictions.eq("name", name));
List result = getHibernateTemplate().findByCriteria(criteria);
if(result.isEmpty())
return null;
else{
return (Entry)result.get(0);
}
}
这在效率和功能上又体现在哪?
上面三种,各有什么不同,哪一种实现方式更好,好在哪里?
很是困惑,谢谢各位请帮助我
|
|
10分 |
使用效率主要是看SQL语句的,SQL写的不好,更牛的技术也是渣渣
|
|
楼主,现在你还没有到那个级别,不要急,等到了再说吧!
|
|
|
什么意思 |
|
5分 |
模拟10万条数据,亲自测试下不就知道了。
|
|
坐等高手 啊
|
|
5分 |
帮顶
|
|
这些方法其实差不多,真正考虑到效率问题的时候不是你的方法的问题,而是整个hiberante的问题了 |
|
10分 |
效率上没什么区别,有一点也是把hibernate的查询转换到sql的这个步骤,对程序的影响微乎其微,性能主要还是看数据库那边是否效率高,说到底还是数据库结构设计的问题。
|
|
在顶顶 看有没更牛B的回复
|
|