Spring与Hibernate整合
我们整合Spring与Hibernate也不例外,就是因为Spring为Hibernate增加了以下内容:
1.Spring为Hibernate的session提供了有效、容易和安全的控制。
2.Spring控制Hibernate的SessionFactory,JDBC DataSources及其它相关资源。
3.Spring提供了完整的事务管理。
4.Spring对异常处理进行了封装。
Spring与Hibernate的集成先要确定配置文件的配置方式,然后再根据配置方式决定编写实现类。
配置文件方面,主要是需要在applicationContext-commons.xml中配置sessionFactory,事务管理器和事务(还需要提供applicationContext-beans.xml来注册各个类,见文件最后)。
由于Spring对Hibernate提供了多种支持,所以它们各自就会有多种配置方式,下面就来分别讲解一下具体的配置方法。
1.sessionFactory的两种配置方式
由于Spring对Hibernate的SessionFactory,JDBC DataSources及其它相关资源进行了控制,所以可以不使用hibernate.cfg.xml,于是配置sessionFactory的两种方式诞生了:使用hibernate.cfg.xml和不使用hibernate.cfg.xml文件。
1)使用hibernate.cfg.xml
这种方法是比较常见的方法,就是我们编写一个hibernate.cfg.xml和一个applicationContext.xml文件。
我们先来看hibernate.cfg.xml:
- <hibernate-configuration>
- <session-factory>
- <property name="hibernate.connection.driver_class">Oracle.jdbc.driver.OracleDriver</property>
- <property name="hibernate.connection.password">dan</property>
- <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:dan</property>
- <property name="hibernate.connection.username">dan</property>
- <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
- <property name="hibernate.hbm2ddl.auto">update</property>
- <mappingresourcemappingresource="com/entity/hbm/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
接着我们来看applicationContext.xml的配置:
- <!-- 配置SessionFactory-->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <!-- 加载hibernate.cfg.xml配置文件 -->
- <property name="configLocation">
- <value>classpath:hibernate.cfg.xml</value>
- </property>
- </bean>
2)不使用hibernate.cfg.xml
由于spring对jdbcdatasource进行了支持,所以这种方式就相当于把hibernate.cfg.xml中的内容放到了applicationContext.xml中。
注意:使用这种方法要先引入两个jar包:commons-dbcp.jar和commons-pool.jar(这两个jar包就是spring对jdbc的支持)。
下面就��看一下applicationContext.xml的代码:
- <!—使用BasicDataSource配置SessionFactory -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:dan"></property>
- <property name="username" value="dan"></property>
- <property name="password" value="dan"></property>
- </bean>
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <!-- hibernate属性配置 -->
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- </props>
- </property>
- <!-- 采用传统的方式的hbm.xml的方式,可以采用如下方式来简化注册hbm.xml的步骤-->
- <property name="mappingLocations">
- <list>
- <value>classpath:/com/entity/hbm/User.hbm.xml</value>
- </list>
- </property>
- </bean>