﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-◎ヤ撧吥菔瀭o┊。&#x7;``。-随笔分类-Spring</title><link>http://www.blogjava.net/hllwuxin/category/25994.html</link><description>刪除昨天啲煩惱.﹖選擇今天啲快樂.﹖設置明天啲幸福.﹖ </description><language>zh-cn</language><lastBuildDate>Wed, 19 Sep 2007 05:25:40 GMT</lastBuildDate><pubDate>Wed, 19 Sep 2007 05:25:40 GMT</pubDate><ttl>60</ttl><item><title>Spring的回调HibernateCallBack方法</title><link>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146439.html</link><dc:creator>優雅Ｄě頽廢</dc:creator><author>優雅Ｄě頽廢</author><pubDate>Wed, 19 Sep 2007 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146439.html</guid><wfw:comment>http://www.blogjava.net/hllwuxin/comments/146439.html</wfw:comment><comments>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hllwuxin/comments/commentRss/146439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hllwuxin/services/trackbacks/146439.html</trackback:ping><description><![CDATA[Spring用回调HibernateCallBack方法实现持久层一些功能,当这些功能不能满足需求时,我们也可以自已来重写HibernateCallBack,例: <br />
public class UsersDAO extends HibernateDaoSupport { <br />
...... <br />
public List getUsers() { <br />
return getHibernateTemplate().executeFind(new HibernateCallback() { <br />
public Object doInHibernate(Session s) throws HibernateException, <br />
SQLException { <br />
Query query = s.createQuery("From Users AS user ORDER BY user.username DESC"); <br />
List list = query.list(); <br />
return list; <br />
} <br />
}); <br />
} <br />
...... <br />
} <br />
但是这样的代码很难让人理解,可以将其打包 <br />
package com.notepad.comm; <br />
import java.sql.SQLException; <br />
import org.hibernate.HibernateException; <br />
import org.hibernate.Session; <br />
import org.springframework.orm.hibernate3.HibernateCallback; <br />
public class HQLCallBackUtil implements HibernateCallback { <br />
private String hql; <br />
<br />
public HQLCallBackUtil(){ <br />
<br />
} <br />
<br />
public HQLCallBackUtil(String hql){ <br />
this.hql=hql; <br />
} <br />
public String getHql() { <br />
return hql; <br />
} <br />
public void setHql(String hql) { <br />
this.hql = hql; <br />
} <br />
public Object doInHibernate(Session s) throws HibernateException, <br />
SQLException { <br />
if (hql == null || hql.equals("")) { <br />
throw new HibernateException("Can't execute NULL hql!"); <br />
} <br />
return s.createQuery(hql).list(); <br />
} <br />
} <br />
然后可以通过如下代码进行调用 <br />
public class UsersDAO extends HibernateDaoSupport { <br />
...... <br />
public List getUsers() { <br />
HQLCallBackUtil callBack=new HQLCallBackUtil(); <br />
callBack.setHql("From Users AS user ORDER BY user.username DESC"); <br />
return this.getHibernateTemplate().executeFind(callBack); <br />
} <br />
...... <br />
} <br />
<img src ="http://www.blogjava.net/hllwuxin/aggbug/146439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hllwuxin/" target="_blank">優雅Ｄě頽廢</a> 2007-09-19 13:25 <a href="http://www.blogjava.net/hllwuxin/archive/2007/09/19/146439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>