Spring与Hibernate整合

SwingGUI 2012-03-25

我们之所以整合框架,就是因为它们整合在一起后会工作的更好,它们为各自提供了一些操作。

我们整合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:

  1. <hibernate-configuration>  
  2.    <session-factory>  
  3.         <property name="hibernate.connection.driver_class">Oracle.jdbc.driver.OracleDriver</property>  
  4.         <property name="hibernate.connection.password">dan</property>  
  5.         <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:dan</property>  
  6.         <property name="hibernate.connection.username">dan</property>  
  7.         <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>  
  8.         <property name="hibernate.hbm2ddl.auto">update</property>  
  9.   
  10.         <mappingresourcemappingresource="com/entity/hbm/User.hbm.xml"/>  
  11.    </session-factory>  
  12. </hibernate-configuration>  

    接着我们来看applicationContext.xml的配置:

  1. <!-- 配置SessionFactory-->  
  2.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  3.         <!-- 加载hibernate.cfg.xml配置文件 -->  
  4.         <property name="configLocation">  
  5.             <value>classpath:hibernate.cfg.xml</value>  
  6.         </property>  
  7. </bean>  

     2)不使用hibernate.cfg.xml

    由于spring对jdbcdatasource进行了支持,所以这种方式就相当于把hibernate.cfg.xml中的内容放到了applicationContext.xml中。   

    注意:使用这种方法要先引入两个jar包:commons-dbcp.jar和commons-pool.jar(这两个jar包就是spring对jdbc的支持)。   

    下面就��看一下applicationContext.xml的代码:  

  1. <!—使用BasicDataSource配置SessionFactory -->  
  2.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">  
  3.         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>  
  4.         <property name="url" value="jdbc:oracle:thin:@localhost:1521:dan"></property>  
  5.         <property name="username" value="dan"></property>  
  6.         <property name="password" value="dan"></property>  
  7.     </bean>  
  8.   
  9.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  10.         <property name="dataSource" ref="dataSource"></property>         
  11.   
  12.         <!-- hibernate属性配置 -->  
  13.         <property name="hibernateProperties">  
  14.             <props>  
  15.                 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>  
  16.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  17.             </props>  
  18.         </property>          
  19.   
  20.         <!-- 采用传统的方式的hbm.xml的方式,可以采用如下方式来简化注册hbm.xml的步骤-->  
  21.         <property name="mappingLocations">  
  22.             <list>  
  23.                 <value>classpath:/com/entity/hbm/User.hbm.xml</value>  
  24.             </list>  
  25.         </property>  
  26. </bean>  

相关推荐