getHibernateTemplate

///////////////////////////第一种实现方式
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);
}
}

这在效率和功能上又体现在哪?
上面三种,各有什么不同,哪一种实现方式更好,好在哪里?
很是困惑,谢谢各位请帮助我

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部