Dao 繼承 HibernateDaoSupport後,使用註解注入sessionFactory

在spring 的HibernateDaoSupport中,setSessionFactory是使用final 修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy。代碼如下:
/**
	 * Set the Hibernate SessionFactory to be used by this DAO.
	 * Will automatically create a HibernateTemplate for the given SessionFactory.
	 * @see #createHibernateTemplate
	 * @see #setHibernateTemplate
	 */
	public final void setSessionFactory(SessionFactory sessionFactory) {
		if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
			this.hibernateTemplate = createHibernateTemplate(sessionFactory);
		}
	}

我们可以变通一下,自己定义一个方法,这个方法去调用hibernateDaoSupport 中的setSessionFacotry方法,达到注入sessionFactory 的目的。

因此我定义如下的类:

我们可以变通一下,自己定义一个方法,这个方法去调用hibernateDaoSupport 中的setSessionFacotry方法,达到注入sessionFactory 的目的。

因此我定义如下的类:因此我定义如下的类:

public class SystemHibernateSupport extends HibernateDaoSupport {
	@Resource(name = "sessionFactory")
	public void setSuperSessionFactory(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}
}

,所有的Dao 继承自定义的SystemHibernateSupport。

该问题迎刃而解。

你可能感兴趣的:(Hibernate)