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的回复
|