论坛首页 Java企业应用论坛

用不用HibernateDaoSupport的苦恼

浏览 23121 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-11-21  
DAO
究竟在Spring框架的应用中,Hibernate持久层应用到底用不用它自带的HibernateDaoSupport呢?
     因为考虑到业务持久层都继承它的话,因为多继承的问题,就不能继承其它的类,比较别扭,还有封装不是很完善等原因,所以自己封装了一个比较完善的BaseHibernateDao。
      那么Spring的亮点之一 --事务管理,是不是就没办法用了呢?
   发表时间:2004-11-21  
当然不是,建议你看一遍HibernateDaoSupport的sourcecode,实际上HibernateDaoSupport的sourcecode很简单的,就是提供了一些方便的封装而已,你完全可以甩开HibernateDaoSupport自己干,实际上你如果看看HibernateTemplate的sourcecode的话,你也可以甩开HibernateTemplate。只要你仔细看看这两个类的sourcecode,搞明白他们是怎么运作的,你完全可以自己写,不必依赖他们。
0 请登录后投票
   发表时间:2004-11-22  
robbin 写道
当然不是,建议你看一遍HibernateDaoSupport的sourcecode,实际上HibernateDaoSupport的sourcecode很简单的,就是提供了一些方便的封装而已,你完全可以甩开HibernateDaoSupport自己干,实际上你如果看看HibernateTemplate的sourcecode的话,你也可以甩开HibernateTemplate。只要你仔细看看这两个类的sourcecode,搞明白他们是怎么运作的,你完全可以自己写,不必依赖他们。


     今天看了HibernateDaoSupport,HibernateTemplate和相关源码,觉得如果我想借助Spring的Hibernate事务管理,就必须让我的BaseHibernateDao继承HibernateAccessor(HibernateTemplate也继承该类,主要是定义一些共同的属性,像SessionFactory 和 flushing behavior),
然后在BaseHibernateDao里面的Save , update ,delete 方法必须封装如下(来自HibernateTemplate):

public Serializable save(final Object entity) throws DataAccessException {
return (Serializable) execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
checkWriteOperationAllowed(session);
return session.save(entity);
}
});
}
感觉还不如直接就extends HibernateTemplate,不知大家这方面有没有什么比较好的做法。
0 请登录后投票
   发表时间:2004-11-22  
一个setHibernateTemplate方法不就可以了吗?何必一定要想着继承呢?
0 请登录后投票
   发表时间:2004-11-23  
HibernateDaoSupport中的方法可以自己来写,不多
而HibernateTemplate可以通过楼上的方法来实现,包装一下就好了
0 请登录后投票
   发表时间:2004-11-30  
反正都要继承,自己写一个基类继承HibernateDaoSupport。使用自己的基类,如果真要脱离Spring时,只要将HibernateDaoSupport改掉不就OK了。何必那么麻烦。
1 请登录后投票
   发表时间:2004-12-01  
我就是采用楼上moxie的做法,感觉还可以。
0 请登录后投票
   发表时间:2004-12-09  
moxie 写道
反正都要继承,自己写一个基类继承HibernateDaoSupport。使用自己的基类,如果真要脱离Spring时,只要将HibernateDaoSupport改掉不就OK了。何必那么麻烦。


我也同意这种方法, 通过组合的方式有什么好处呢? 反而会更麻烦
0 请登录后投票
   发表时间:2007-03-21  
同意楼上的
0 请登录后投票
   发表时间:2007-03-21  
Morgan0916 写道
moxie 写道
反正都要继承,自己写一个基类继承HibernateDaoSupport。使用自己的基类,如果真要脱离Spring时,只要将HibernateDaoSupport改掉不就OK了。何必那么麻烦。


我也同意这种方法, 通过组合的方式有什么好处呢? 反而会更麻烦

我 也是这么用
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics