使用Annotation整合Spring2.5和Hibernate3.3,在使用HibernateDaoSupport的时候我希望采用Annotation的方式,但是setSessionFactory被标记为final,那继承HibernateDaoSupport后就不能重写setSessionFactory方法来实现使用Annotation的注入, 解决方法如下:
@Resource(name="sessionFactory")
public void setBaseDaoSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
如果采用hibernate4的话, 会遇到java.lang.NoSuchMethodError
主要原因就是hibernate4已经提供了很好的机制,所以不需要再继承HibernateDaoSupport类了。那怎么办呢?不就是为了获取到Session么,我们直接在UserDAOImpl.java类中添加一个SessionFactory属性,再添上它的setter方法。
@Autowired
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession(){
return sessionFactory.openSession();
}
注意这里不要用getCurrentSession(),不然还是有异常。直接用openSession() //这样好像又不对,hibernate 4.1中又必须调用
getCurrentSession, 不然不在一个session里
本文介绍如何在Spring2.5和Hibernate3.3中通过Annotation方式整合,并针对Hibernate4提出了解决方案,避免使用HibernateDaoSupport类,直接在DAO实现类中注入SessionFactory。

被折叠的 条评论
为什么被折叠?



