Spring与Hibernate整合(一)

来源:互联网 发布:北京师范大学 知乎 编辑:程序博客网 时间:2024/05/17 22:46

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

我们整合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>        <mappingresource="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>

  接下来会继续介绍事务的配置,请看《Spring与Hibernate整合方式(二)》。