但是在实际中使用XXXDaoImpl extends hibernateDaoSupport 时,就会出现sessionFactory is required (sessionfactory是必须的)。而我使用IbatisDaoSupport的时候,就不会出现上面的问题。
sessionFactory和datasource的创建没有问题(这个是前提)
1.HibernateDaoSupport
//设置SessionFactory
public final void setSessionFactory(SessionFactory sessionFactory) {
if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
this.hibernateTemplate = createHibernateTemplate(sessionFactory);
}
}
2.SqlMapClientDaoSupport(ibatis)
private SqlMapClientTemplate sqlMapClientTemplate = new SqlMapClientTemplate();
private boolean externalTemplate = false;
/**
* Set the JDBC DataSource to be used by this DAO.
* Not required: The SqlMapClient might carry a shared DataSource.
* @see #setSqlMapClient
*/
public final void setDataSource(DataSource dataSource) {
if (!this.externalTemplate) {
this.sqlMapClientTemplate.setDataSource(dataSource);
}
}
为什么ibatis的SqlMapClientDaoSupport 就能注入DataSource 而hibernateDaoSupport就不能注入sessionFactory.
本题的主要目的就是为了讨论这个原因。hibernateDaoSupport得到sessionFactory的方式已经解决。希望大侠们能帮我解开这个问题!!!!