简述
目前使用spring hibernate作为项目的框架,并且使用注解方式进行对象装载。在装载Dao对象的时候常常需要注入sessionFactory对象,通常的做法是Dao继承至HibernateDaoSuppor,t然后在Dao中添加setSuperSessionFactory 方法进行注入的,这几天网上又看到一种更好的方法,所以这里就把这两种方法都记录一下。
方法一(继承HibernateDaoSupport)
这个是比较常用的方法,看到很多文章中都使用这种方式。
前置条件:
sessionFactory已在spring的配置文件中配置
步骤:
1. 继承HibernateDaoSupport类
2. 添加 setSuperSessionFactory 方法进行注入。
@Repository public class AviatorDao extends HibernateDaoSupport { // 不能直接使用 setSessionFactory 是因为在HibernateDaoSupport中被定义为final @Resource(name = "sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } }
方法二(继承BaseDao工具基类)
前置条件:
sessionFactory已在spring的配置文件中配置
步骤:
1.编写BaseDao工具基类,并定义sessionFactory属性2.对这个sessionFactory进行注解注入(配置@Resource标签)3.Dao继承BaseDao工具基类
参考代码:
原理分析
其实注入的原理也比较简单,sessionFactory本身在spring的环境中已经有了,所以其实在dao中本身也可以注解一个sessionFactory,但是以上两种方式的优势在于及注入了sessionFactory又继承了一些通用的方法。