使用spring注解,注入sessionFactory类

简述

目前使用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又继承了一些通用的方法。

你可能感兴趣的:(spring,hibernate)