Code Bye

关于hibernate 使用效率的问题

 

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写的不好,更牛的技术也是渣渣
楼主,现在你还没有到那个级别,不要急,等到了再说吧!
引用 2 楼 zy353003874 的回复:

楼主,现在你还没有到那个级别,不要急,等到了再说吧!

什么意思


5分
模拟10万条数据,亲自测试下不就知道了。
坐等高手       啊

5分
帮顶
引用 3 楼 QJKT7777777 的回复:
Quote: 引用 2 楼 zy353003874 的回复:

楼主,现在你还没有到那个级别,不要急,等到了再说吧!

什么意思

这些方法其实差不多,真正考虑到效率问题的时候不是你的方法的问题,而是整个hiberante的问题了


10分
效率上没什么区别,有一点也是把hibernate的查询转换到sql的这个步骤,对程序的影响微乎其微,性能主要还是看数据库那边是否效率高,说到底还是数据库结构设计的问题。
在顶顶           看有没更牛B的回复  

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于hibernate 使用效率的问题