您的位置:首页 > 其它

入侵万象服务器的方法

2006-11-08 09:12 323 查看
我一直在想,Spring 里的 HibernateTemplate 已经做得很完善了,为什么我们的实现不也继承他呢?
我们的DAO也可以继承HibernateOperations接口,这样一来,我们是不是不用再重复写HibernateOperations接口里所有的方法了呢?
如果要扩展我们自己的方法可以写在Manager里,而Manager又可以继承我们的DAO,然后ManagerImpl可以再继承DAOImpl的。

这只是一个想法,也在实施中出错了。

一般的实现我们都会继承HibernateDaoSupport,然后再通过this.getHibernateTemplate()....

先不说那么多了,贴一下我的代码:

接口BaseDAO
public interface BaseDAO extends HibernateOperations  {
}


实现BaseDAOImpl,并试图用HibernateDaoSupport里的方法在实现里注入sessionFactory
public class BaseDAOImpl extends HibernateTemplate implements BaseDAO {

/**
* Set the Hibernate SessionFactory to be used by this DAO.
* Will automatically create a HibernateTemplate for the given SessionFactory.
* @see #createHibernateTemplate
* @see #setHibernateTemplate
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.createHibernateTemplate(sessionFactory);
}
/**
* Create a HibernateTemplate for the given SessionFactory.
* Only invoked if populating the DAO with a SessionFactory reference!
* <p>Can be overridden in subclasses to provide a HibernateTemplate instance
* with different configuration, or a custom HibernateTemplate subclass.
* @param sessionFactory the Hibernate SessionFactory to create a HibernateTemplate for
* @return the new HibernateTemplate instance
* @see #setSessionFactory
*/
protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory) {
return new HibernateTemplate(sessionFactory);
}

/**
* Return the Hibernate SessionFactory used by this DAO.
*/
public SessionFactory getSessionFactory() {
return super.getSessionFactory();
}
}


接口BaseManager ,这里用来扩展我们需要的方法,如分页。
public interface BaseManager extends BaseDAO {

/**
* 通过持久化对象类型,和输入参数,开始记录和查询记录数,返回查询列表
* @param entityClass Class
* @param firstResult int
* @param maxResult int
* @return List
*/
public List findToPage(Class entityClass, int firstResult, int maxResult);
}


实现BaseManagerImpl ,这里注入BaseDAO
public class BaseManagerImpl extends BaseDAOImpl implements BaseManager {
private BaseDAO baseDAO ;

public BaseDAO getBaseDAO() {
return baseDAO;
}

public void setBaseDAO(BaseDAO baseDAO) {
this.baseDAO = baseDAO;
}

public List findToPage(Class entityClass, int firstResult, int maxResult) {
baseDAO......
}

}


我的代码就是这些,但是我在启动服务器时,告诉我注入sessionFactory注入错误,然后我又看了HibernateDaoSupport里面注入sessionFactory,接着拷贝,然后提示sessionFactory和baseDAO无法注入。

javaeye里的各位大哥们,我想实现这样的想法,需要怎么做呢?

这样的想法是否是对的,是不是DAO太大了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: