歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

為什麼用Spring來管理Hibernate

用Spring來管理以及整合Hibernate呢?

首先我們來看一下Hibernate進行操作的步驟。比如添加用戶的一個步驟。

Hibernate操作的步驟如下:

1.      獲得Configuration對象

2.      創建SessionFactory

3.      創建Session

4.      打開事務

5.      進行持久化操作。比如上面的添加用戶操作

6.      提交事務

7.      發生異常,回滾事務

8.      關閉事務

使用Hibernate進行訪問持久層,每次都要進行這八個步驟。但是若使用Spring對Hibernate進行管理,又是怎麼樣的呢?

首先,Spring對Hibernate提供了HibernateTemple類。這個模版類對session進行封裝。並且Spring會默認為自動提交事務。所在在dao層直接寫入this.save(Object)即可。

在實踐中,遇到了一個問題,無法插入數據庫,經過一番折騰,多次實驗,驗證,總結一下原因,結果如下:

注意:所有的操作都必須在事務中進行。若單純的使用Hibernate,則事務需要手動開啟提交關閉操作。當然也可以在Hibernate配置文件中,自動提交。

若使用Spring管理Hibernate,則默認的是自動提交事務。但是在此,需要注意的是:若使用Spring在配置文件中配置數據源而不使用hibernate.cfg.xml,則可以成功插入數據庫,因為HibernateTemple默認提供自動提交事務。在Spring的配置文件配置數據源如下:使用此數據源需要的jar如下:commons-dbcp.jar,commons-pool.jar,msbase.jar,mssqlserver.jar, msutil.jar,sqljdbc4.jar;

  1. <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource">  
  2.     <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>  
  3.     <property name="url" value="jdbc:sqlserver://192.168.24.176:1433;database=test"></property>  
  4.     <property name="username" value="sa"></property>  
  5.     <property name="password" value="123"></property>  
  6. </bean>  
  7. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  8.     <property name="dataSource" ref="dataSource"></property>      
  9.     <!-- hibernate屬性配置 -->  
  10.     <property name="hibernateProperties">  
  11.         <props>  
  12.             <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>  
  13.             <prop key="hibernate.hbm2ddl.auto">update</prop>  
  14.         </props>  
  15.     </property>  
  16. lt;!--      如果采用傳統的hbm.xml的方式,可以采用如下方式來簡化注冊hbm.xml的步驟,並且class為LocalSessionFactoryBean -->  
  17.     <property name="mappingLocations">  
  18.         <list>  
  19.             <value>classpath:User.hbm.xml</value>  
  20.         </list>  
  21.     </property>  
  22. </bean>  
  1. <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource">  
  2.     <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>  
  3.     <property name="url" value="jdbc:sqlserver://192.168.24.176:1433;database=test"></property>  
  4.     <property name="username" value="sa"></property>  
  5.     <property name="password" value="123"></property>  
  6. </bean>  
  7. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  8.     <property name="dataSource" ref="dataSource"></property>      
  9.     <!-- hibernate屬性配置 -->  
  10.     <property name="hibernateProperties">  
  11.         <props>  
  12.             <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>  
  13.             <prop key="hibernate.hbm2ddl.auto">update</prop>  
  14.         </props>  
  15.     </property>  
  16. lt;!--      如果采用傳統的hbm.xml的方式,可以采用如下方式來簡化注冊hbm.xml的步驟,並且class為LocalSessionFactoryBean -->  
  17.     <property name="mappingLocations">  
  18.         <list>  
  19.             <value>classpath:User.hbm.xml</value>  
  20.         </list>  
  21.     </property>  
  22. </bean>  
Copyright © Linux教程網 All Rights Reserved