創(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è)試的代碼目錄如下:
hibernate.cfg.xml
<?xml version="1.0"?> <!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)
猜你還喜歡下面的內(nèi)容