日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
為什么用Spring來(lái)管理Hibernate?

為什么要用Hibernate框架?這個(gè)在《Hibernate介紹》博客中已經(jīng)提到了。

成都創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷需求!成都創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站建設(shè)、成都做網(wǎng)站項(xiàng)目的能力。經(jīng)過(guò)十年的努力的開(kāi)拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。

既然用Hibernate框架訪問(wèn)管理持久層,那為何又提到用Spring來(lái)管理以及整合Hibernate呢?

首先我們來(lái)看一下Hibernate進(jìn)行操作的步驟。比如添加用戶的一個(gè)步驟。在上一篇博客中《八步詳解Hibernate的搭建及使用》詳細(xì)介紹到了Hibernate使用的步驟。以下的代碼來(lái)自上篇博客,在此為了解釋提出的問(wèn)題,只做一個(gè)截圖,若想看完整代碼示例,可以參考《八步詳解Hibernate的搭建及使用》

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

  1. 獲得Configuration對(duì)象
  2. 創(chuàng)建SessionFactory
  3. 創(chuàng)建Session
  4. 打開(kāi)事務(wù)
  5. 進(jìn)行持久化操作。比如上面的添加用戶操作
  6. 提交事務(wù)
  7. 發(fā)生異常,回滾事務(wù)
  8. 關(guān)閉事務(wù)

使用Hibernate進(jìn)行訪問(wèn)持久層,每次都要進(jìn)行這八個(gè)步驟。但是若使用Spring對(duì)Hibernate進(jìn)行管理,又是怎么樣的呢?

首先,Spring對(duì)Hibernate提供了HibernateTemple類。這個(gè)模版類對(duì)session進(jìn)行封裝。并且Spring會(huì)默認(rèn)為自動(dòng)提交事務(wù)。所在在dao層直接寫(xiě)入this.save(Object)即可。

在實(shí)踐中,遇到了一個(gè)問(wèn)題,無(wú)法插入數(shù)據(jù)庫(kù),經(jīng)過(guò)一番折騰,多次實(shí)驗(yàn),驗(yàn)證,總結(jié)一下原因,結(jié)果如下:

注意:所有的操作都必須在事務(wù)中進(jìn)行。若單純的使用Hibernate,則事務(wù)需要手動(dòng)開(kāi)啟提交關(guān)閉操作。當(dāng)然也可以在Hibernate配置文件中,自動(dòng)提交。

若使用Spring管理Hibernate,則默認(rèn)的是自動(dòng)提交事務(wù)。但是在此,需要注意的是:若使用Spring在配置文件中配置數(shù)據(jù)源而不使用hibernate.cfg.xml,則可以成功插入數(shù)據(jù)庫(kù),因?yàn)镠ibernateTemple默認(rèn)提供自動(dòng)提交事務(wù)。在Spring的配置文件配置數(shù)據(jù)源如下:使用此數(shù)據(jù)源需要的jar如下:commons-dbcp.jar,commons-pool.jar,msbase.jar,mssqlserver.jar, msutil.jar,sqljdbc4.jar;

 
 
 
 
  1.  
  2.       
  3.       
  4.       
  5.       
  6.  
  7.  
  8.           
  9.       
  10.       
  11.           
  12.             org.hibernate.dialect.SQLServerDialect  
  13.             update  
  14.           
  15.       
  16. !--         如果采用傳統(tǒng)的hbm.xml的方式,可以采用如下方式來(lái)簡(jiǎn)化注冊(cè)hbm.xml的步驟,并且class為L(zhǎng)ocalSessionFactoryBean -->  
  17.       
  18.           
  19.             classpath:User.hbm.xml  
  20.           
  21.       
  22.  

若Spring中不是直接配置數(shù)據(jù)源,而是使用hibernate.cfg.xml,則是無(wú)法若直接this.save(Object),則無(wú)法插入數(shù)據(jù)庫(kù)中,但是可以保存中緩存中。因?yàn)樗械牟僮鞫际窃谑聞?wù)中執(zhí)行的,而hibernate.cfg.xml數(shù)據(jù)源則默認(rèn)是不是自動(dòng)提交的。解決的辦法如下:可以在hibernate.cfg.xml中填寫(xiě):

true

以下Spring使用hibernate.cfg.xml數(shù)據(jù)源

 
 
 
 
  1.  
  2.        
  3.             classpath:hibernate.cfg.xml  
  4.           
  5.       
  6.               
  7.                 classpath:User.hbm.xml  
  8.               
  9.       
  10.       

以上,介紹了Spring來(lái)管理Hibernate的好處在于,不用手動(dòng)創(chuàng)建SessionFactory,Session,不用手動(dòng)開(kāi)啟提交關(guān)閉事務(wù),這一切完全都是由Spring來(lái)管理。并且Spring還提供了HibernateTemple的工具,使一切操作簡(jiǎn)單方便。

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

 
 
 
 
  1. <bean id="userDao" class="com.UserDao.UserDaoImpl">  
  2.       
  3.  

則在dao層的代碼如下:

 
 
 
 
  1. package com.UserDao;  
  2. import org.springframework.orm.hibernate3.HibernateTemplate;  
  3. import com.user.User;  
  4.  
  5. public class UserDaoImpl extends HibernateTemplate implements UserDao {  
  6. @Override 
  7.     public void insert(User user) {  
  8.         this.save(user);      
  9.     }  

這只是其中的關(guān)鍵的代碼,至于完整的小demo,已經(jīng)上傳。

正如上述所說(shuō),一切操作盡在事務(wù)中,事務(wù)這個(gè)概念想必大家不陌生吧,一般情況,事務(wù)應(yīng)該在業(yè)務(wù)邏輯層,而不是在dao層應(yīng)用。并且Spring對(duì)事務(wù)有很好的封裝,自己有一套事務(wù)管理的封裝,使業(yè)務(wù)邏輯與事務(wù)管理分離,進(jìn)一步達(dá)到解耦作用。下一篇博客,我們繼續(xù)會(huì)講解Spring管理Hibernate中的事務(wù)管理。

原文鏈接:http://blog.csdn.net/llhhyy1989/article/details/7430086

【編輯推薦】

  1. Java并行編程:從并行任務(wù)集獲取反饋
  2. Hibernate復(fù)合主鍵映射
  3. Hibernate事務(wù)與并發(fā)問(wèn)題處理
  4. 讓Hibernate顯示SQL語(yǔ)句的綁定參數(shù)值
  5. Hibernate延遲加載剖析與代理模式應(yīng)用

網(wǎng)站題目:為什么用Spring來(lái)管理Hibernate?
分享路徑:http://www.dlmjj.cn/article/djdcsph.html