深入淺析Java中的Hibernate事務(wù)管理-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線(xiàn)動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

十余年專(zhuān)注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專(zhuān)注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)成都石雕等多個(gè)領(lǐng)域,擁有豐富的營(yíng)銷(xiāo)推廣經(jīng)驗(yàn)。

深入淺析Java中的Hibernate事務(wù)管理?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

環(huán)境與版本

hibernate 版本:Hibernate 4.2.2 (下載后的文件名為hibernate-release-4.2.2.Final.zip,解壓目錄hibernate-release-4.2.2.Final)

數(shù)據(jù)庫(kù): Oracle 10g

導(dǎo)入lib\required 中的所有jar 包

理論說(shuō)明

1、SessionFactory負(fù)責(zé)創(chuàng)建Session,SessionFactory是線(xiàn)程安全的,多個(gè)并發(fā)線(xiàn)程可以同時(shí)訪問(wèn)一個(gè)SessionFactory 并從中獲取Session實(shí)例

2、Session作為貫穿Hibernate的持久化管理器核心,提供了眾多的持久化的方法,如save(), update ,delete ,find(Hibernate 3中已經(jīng)取消了此方法)等,通過(guò)這些方法我們可以透明的完成對(duì)象的增刪改查(CRUD-- create read update delete),這里所謂的透明是指,Session在讀取,創(chuàng)建和刪除影射的實(shí)體對(duì)象的實(shí)例時(shí),這一系列的操作將被轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)的增加,修改,查詢(xún)和刪除操作。

Session有以下的特點(diǎn)

  1)不是線(xiàn)程安全的,應(yīng)該避免多個(gè)線(xiàn)程共享同一個(gè)Session實(shí)例

  2)Session實(shí)例是輕量級(jí)的,所謂輕量級(jí):是指他的創(chuàng)建和刪除不需要消耗太多資源

  3)Session對(duì)象內(nèi)部有一個(gè)緩存,被稱(chēng)為Hibernate第一緩存,他存放被當(dāng)前工作單元中加載的對(duì)象,每個(gè)Session實(shí)例都有自己的緩存。

3、Hibernate Session緩存被稱(chēng)為Hibernate的第一級(jí)緩存。SessionFactory的外置緩存稱(chēng)為Hibernate的二級(jí)緩存。這兩個(gè)緩存都位于持久層,它們存放的都是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝。SessionFactory的內(nèi)置緩存 存放元數(shù)據(jù)和預(yù)定義SQL, SessionFactory的內(nèi)置緩存是只讀緩存。

4、Hibernate Session緩存的三大作用:

  1)減少數(shù)據(jù)庫(kù)的訪問(wèn)頻率,提高訪問(wèn)性能。

  2)保證緩存中的對(duì)象與數(shù)據(jù)庫(kù)同步,位于緩存中的對(duì)象稱(chēng)為持久化對(duì)象。

  3)當(dāng)持久化對(duì)象之間存在關(guān)聯(lián)時(shí),Session 保證不出現(xiàn)對(duì)象圖的死鎖。

Session 如何判斷持久化對(duì)象的狀態(tài)的改變呢?

Session 加載對(duì)象后會(huì)為對(duì)象值類(lèi)型的屬性復(fù)制一份快照。當(dāng)Session 清理緩存時(shí),比較當(dāng)前對(duì)象和它的快照就可以知道那些屬性發(fā)生了變化。

5、Session 什么時(shí)候清理緩存?

  1)commit() 方法被調(diào)用時(shí)

  2)查詢(xún)時(shí)會(huì)清理緩存,保證查詢(xún)結(jié)果能反映對(duì)象的最新?tīng)顟B(tài)。

  3)顯示的調(diào)用session 的 flush方法。

session 清理緩存的特例:

當(dāng)對(duì)象使用 native 生成器 時(shí) 會(huì)立刻清理緩存向數(shù)據(jù)庫(kù)中插入記錄。

實(shí)例代碼

測(cè)試的代碼目錄如下:

深入淺析Java中的Hibernate事務(wù)管理

hibernate.cfg.xml

<&#63;xml version="1.0"&#63;> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
 <session-factory> 
 <property name="show_sql">true</property> 
 <property name="hibernate.connection.driver_class"> 
  oracle.jdbc.driver.OracleDriver 
 </property> 
 <property name="hibernate.connection.url"> 
  jdbc:oracle:thin:@XX.26.158.43:1521:orcl 
 </property> 
 <property name="hibernate.connection.username"></property> 
 <property name="hibernate.connection.password"></property> 
 <property name="dialect">org.hibernate.dialect.OracleDialect</property> 
  
 <mapping resource="com/oscar999/trans/hibernate/Product.hbm.xml"/> 
 </session-factory> 
</hibernate-configuration> 

新聞名稱(chēng):深入淺析Java中的Hibernate事務(wù)管理-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article48/eidhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、全網(wǎng)營(yíng)銷(xiāo)推廣、企業(yè)網(wǎng)站制作電子商務(wù)、網(wǎng)站制作商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化