中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么用Spring來管理Hibernate

發布時間:2021-10-27 11:01:06 來源:億速云 閱讀:95 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關為什么用Spring來管理Hibernate,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

為什么要用Hibernate框架?

既然用Hibernate框架訪問管理持久層,那為何又提到用Spring來管理以及整合Hibernate呢?

首先我們來看一下Hibernate進行操作的步驟。比如添加用戶的一個步驟。在此為了解釋提出的問題

看截圖,可以看出,Hibernate操作的步驟如下:

為什么用Spring來管理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;

<bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource">      <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>      <property name="url" value="jdbc:sqlserver://192.168.24.176:1433;database=test"></property>      <property name="username" value="sa"></property>      <property name="password" value="123"></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.SQLServerDialect</prop>              <prop key="hibernate.hbm2ddl.auto">update</prop>          </props>      </property>  !--         如果采用傳統的hbm.xml的方式,可以采用如下方式來簡化注冊hbm.xml的步驟,并且class為LocalSessionFactoryBean -->      <property name="mappingLocations">          <list>              <value>classpath:User.hbm.xml</value>          </list>      </property>  </bean>

若Spring中不是直接配置數據源,而是使用hibernate.cfg.xml,則是無法若直接this.save(Object),則無法插入數據庫中,但是可以保存中緩存中。因為所有的操作都是在事務中執行的,而hibernate.cfg.xml數據源則默認是不是自動提交的。解決的辦法如下:可以在hibernate.cfg.xml中填寫:

<property name="hibernate.connection.autocommit">true</property>

以下Spring使用hibernate.cfg.xml數據源

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">       <property name="configLocation">              <value>classpath:hibernate.cfg.xml</value>          </property>      <property name="mappingLocations">              <list>                  <value>classpath:User.hbm.xml</value>              </list>      </property>      </bean>

以上,介紹了Spring來管理Hibernate的好處在于,不用手動創建SessionFactory,Session,不用手動開啟提交關閉事務,這一切完全都是由Spring來管理。并且Spring還提供了HibernateTemple的工具,使一切操作簡單方便。

dao層在Spring配置文件中配置如下:

<<span style="font-size:12px;">bean id="userDao" class="com.UserDao.UserDaoImpl">      <property name="sessionFactory" ref="sessionFactory"></property>  </bean></span>

則在dao層的代碼如下:

package com.UserDao;  import org.springframework.orm.hibernate3.HibernateTemplate;  import com.user.User;   public class UserDaoImpl extends HibernateTemplate implements UserDao {  @Override     public void insert(User user) {          this.save(user);          }  }

這只是其中的關鍵的代碼。

關于為什么用Spring來管理Hibernate就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永安市| 孙吴县| 滁州市| 象山县| 年辖:市辖区| 屏边| 格尔木市| 丰都县| 海口市| 获嘉县| 闵行区| 皮山县| 双牌县| 岗巴县| 买车| 南涧| 武川县| 崇仁县| 龙门县| 子长县| 甘南县| 民权县| 咸丰县| 汕头市| 崇州市| 绵竹市| 镇远县| 洛隆县| 丰台区| 故城县| 且末县| 澜沧| 合水县| 长寿区| 津市市| 铅山县| 广丰县| 鹿泉市| 阳东县| 徐州市| 浏阳市|