读书人

Spring跟Hibernate的整合

发布时间: 2012-09-08 10:48:07 作者: rapoo

Spring和Hibernate的整合

???? Spring和Hibernate的整合关键就是要将Hibernate的sessionFactory交给Spring来管理。另外一个就是配置数据源。下面来讲如何配置数据源:
???? 数据源可以采用一些开源的数据源,如DBCP,c3p0等。也可以采用JNDI数据源,即容器提供的数据源。下面就讲解DBCP的配置:

?? 配置上面的数据源需要引入DBCP的jar包commons-dbcp.jar。它里边有一个类BasicDataSource,它提供了主要数据源配置属性所应有的getter和setter方法,所以我们才能像上面那样配置。当然,可以配置的属性远远超过我上面配的,如果需要配置其他的属性,可以直接到BasicDataSource类里面找到。

?????配置JNDI数据源就相对较简单一些。JNDI数据源一般在容器中已经配置好了,在spring中只不过是引用罢了。

那么如何在容器中配置JNDI数据源呢?下面就以tomcat6为例讲解,tomcat5的方法稍有不同。

???? 首先,在tomcat的目录下找到一个conf目录,里面有一个文件context.xml,用于配置tomcat启动上下文。现在在里面加上一段话:

?将这段话放到</context>标签之前就行。当然,里边的参数可以根据具体的情况设定。配置好了之后我们还需要在web.xml文件中加上一段

?这看起来比配置DBCP的数据源要简单多了,其实最终它的底层也是DBCP实现的,它是apache的一个开源项目。

?

???? OK!数据源已经有了,下一步就是如何产生Hibernate所需的sessionfactory了。下面贴出一个简单的代码:

?我们注意到,这里边注入了一个dataSource,这个datasource就是我们刚才创建的那个。另外一个就是引入hibernate的实体类映射文件,所有的映射文件都包含在mappingResources下面。然后就是配置hibernate的相关属性,以properties文件的键值对样式配置,包含在<props></props>之间。这样我们就完全可以省略hibernate自身的配置文件hibernate.cfg.xml了。

?

???? 这样就真的OK了,我们只需要在需要用到sessionfactory的地方给他注入就行了。由于用Hibernate访问数据库经常会用到一个类HibernateTemplate。当我们实例化改类的时候,需要给他传入一个sessionfactory的实例。这时我们就可以利用spring给我们去注入这个值。

?

?

附录:
Spring整合Hibernate必须jar包:

Spring跟Hibernate的整合

?

不要认为asm.jar、commons-collections.jar、dom4j.jar、jta.jar这几个包不重要,没有他Spring启动不了。

?

读书人网 >软件架构设计

热点推荐