`
wiley
  • 浏览: 252041 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring用回调HibernateCallBack方法

阅读更多
百事通信息网


Spring用回调HibernateCallBack方法实现持久层一些功能,当这些功能不能满足需求时,我们也可以自已来重写HibernateCallBack,例:
public class UsersDAO extends HibernateDaoSupport {
   ......
public List getUsers() {
  return getHibernateTemplate().executeFind(new HibernateCallback() {
   public Object doInHibernate(Session s) throws HibernateException,
     SQLException {
    Query query = s.createQuery("From Users AS user ORDER BY user.username DESC");
    List list = query.list();
    return list;
   }
  });
}
  ......
}
但是这样的代码很难让人理解,可以将其打包
package com.notepad.comm;
import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
public class HQLCallBackUtil implements HibernateCallback {
private String hql;

public HQLCallBackUtil(){
 
}

public HQLCallBackUtil(String hql){
  this.hql=hql;
}
public String getHql() {
  return hql;
}
public void setHql(String hql) {
  this.hql = hql;
}
public Object doInHibernate(Session s) throws HibernateException,
   SQLException {
  if (hql == null || hql.equals("")) {
   throw new HibernateException("Can't execute NULL hql!");
  }
  return s.createQuery(hql).list();
}
}
然后可以通过如下代码进行调用
public class UsersDAO extends HibernateDaoSupport {
   ......
public List getUsers() {
     HQLCallBackUtil callBack=new HQLCallBackUtil();
     callBack.setHql("From Users AS user ORDER BY user.username DESC");
     return this.getHibernateTemplate().executeFind(callBack);
}
  ......
}
这样是不是感觉简单很多呢!
分享到:
评论
3 楼 congpeixue 2008-06-19  
你做的这个工具类  感觉就没内部类灵活了
2 楼 mylifestyle1225 2008-04-02  
恩,对的.很好。
1 楼 wntaimoshen 2007-08-08  
看不太明白!

相关推荐

    HibernateCallback使用方法

    HibernateCallback使用方法

    第24次课-1 Spring与Hibernate的整合

    通常,程序中采用实现HibernateCallback的匿名内部类来获取HibernateCallback的实例,方法doInHibernate()就是Spring执行的持久化操作。 24.3 Spring对Hibernate的简化 24.3.5 HibernateDaoSupport Spring为与...

    Spring整合Hibernate 详解.doc

    6.5 Spring整合Hibernate 6.6 Spring提供的DAO支持 6.5.2 管理Hibernate的...6.5.4 使用HibernateCallBack 6.5.6 使用IoC容器组装各种组件 6.5.7启动web容器读取xml配置文件 6.5.8了解继承自HibernateDaoSupport类DAO

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    SPRING API 2.0.CHM

    HibernateCallback HibernateDaoSupport HibernateDaoSupport HibernateInterceptor HibernateInterceptor HibernateJdbcException HibernateJdbcException HibernateJpaDialect HibernateJpaVendorAdapter ...

    ssh(structs,spring,hibernate)框架中的上传下载

    TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    Hibernate3.6.10用到的jiar

    Hibernate3.6.10用到的jiar antlr-2.7.6.jar,commons-collections-3.1, commons-logging-1.1.3, dom4j-1.6.1, ejb3-persistence, hibernate-jpa-2.0-api-1.0.1.Final, hibernate3, javassist-3.12.0.GA, jta...

    HibernateTemplate详细描述以及使用范围

    对Spring框架中,HibernateTemplate的使用,底层dao中HibernateTemplate的使用以及HibernateCallBack调用等等

    新闻发布系统

    return template.execute(new HibernateCallback<List<News>>() { public List<News> doInHibernate(Session session) throws HibernateException,SQLException { List<News> list = null; Query query...

Global site tag (gtag.js) - Google Analytics