HibernateDaoSupport疑惑
我现在有一个类
public class GenericDaoHibernateImpl<T, PK extends Serializable> extends HibernateDaoSupport implements GenericDao<T, PK> {
但是我配置文件 没有xml配置 GenericDaoHibernateImpl,给他注入 HibernateTemplate ,
也没有注入 sessionfctory
------------
然后GenericDaoHibernateImpl这个类里面也没有 注解
setSuperHibernateTemplate 或者 setSupersessionfctory 之类
---------------
但是 我就疑惑了 ,他还能 用 getHibernateTemplate里面的模板方法
请教高人 HibernateTemplate是如何注入的
ps:HibernateDaoSupport 是抽象的,里面的两个set是final的 我知道
-------------------------
GenericDaoHibernateImpl 有这个方法
private Class<T> type;//实体类类型,(由构造方法自动赋值)
public GenericDaoHibernateImpl(Class<T> type) {
this.type = type;
}
---
public class TSysPostDaoHibernateImpl extends
GenericDaoHibernateImpl<TSysPost, Long> implements ITSysPostDao {
public TSysPostDaoHibernateImpl(Class<TSysPost> post) {
super(post);
}
}
TSysPostDaoHibernateImpl 是子类
------解决方案--------------------当你继承了hibernatedaosupport类后,对于子类可以直接用到父类的excute(CURD)方法,这样就会减轻很多程序员的工作。
------解决方案--------------------我看清楚你的意思了,如果你没有注入sessionFactory的话是会报错的
/*注入属性sessionFactory,这个属性在HibernateDaoSupport类中*/
@Autowired
public void setSuperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
这个没有的话会报以下的错
Error creating bean with name 'usersDao' defined in file [C:\Users\user\Workspaces\MyEclipse 8.5 M2\sshTest\WebRoot\WEB-INF\classes\com\bbx\dao\impl\UsersDaoImpl.class]: Invocation of init method failed; nested exception is
java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
------解决方案--------------------这个类注入HibernateTemplate 和sessionFactory都行