新聞中心
在向大家詳細(xì)介紹Hibernate JDBC事務(wù)之前,首先讓大家了解下Hibernate類(lèi)的initialize()方法,然后全面介紹Hibernate JDBC事務(wù)。

創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),祿勸網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:祿勸等地區(qū)。祿勸做網(wǎng)站價(jià)格咨詢(xún):18982081108
Hibernate類(lèi)的initialize()方法
initialize()方法強(qiáng)制Hibernate立即加載指定實(shí)體所關(guān)聯(lián)的對(duì)象和集合。Hibernate類(lèi)中還有其他幾個(gè)很有用但不適很常用的方法。
映射文件中的lazy屬性
在Hibernate3中,class元素的lazy屬性默認(rèn)是true,如果不需要,則需要顯示指定為lazy="false",否則,操作load返回的對(duì)象會(huì)拋異常。另外Hibernate3中還可以為實(shí)體屬性指定lazy屬性。
Hibernate JDBC事務(wù)和JTA事務(wù)
Hibernate本身沒(méi)有事務(wù)管理功能,它依賴(lài)于JDBC或JTA的事務(wù)管理功能,在Hibernate配置文件中,如果不顯式指定Transaction的工廠類(lèi)別屬性hibernate.transaction.factory_class的配置,則默認(rèn)為JDBC事務(wù):
name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
在通過(guò)SessionFactory獲取到Session后,與Session相關(guān)聯(lián)的JDBC Connection實(shí)例就被設(shè)定為false。
特別注意:如果數(shù)據(jù)庫(kù)不支持事務(wù),比如MySQL的MyISAM引擎的表就不支持事務(wù),聲明事務(wù)也不會(huì)起作用。要使MySQL5的表支持事務(wù),則可以指定表的引擎類(lèi)型為InnoDB。如果是學(xué)習(xí)或者研究,目前***還是使用PostgreSQL 8.3或DB2、Oracle。
Hibernate JDBC事務(wù)總是和一個(gè)數(shù)據(jù)庫(kù)連接(或一個(gè)Session)相關(guān)聯(lián)的。
JTA事務(wù)則可以跨越多個(gè)數(shù)據(jù)連接(或多個(gè)Session),這些連接還可以是不同數(shù)據(jù)庫(kù)的連接,JTA事務(wù)一般由容器進(jìn)行管理。編程只要在多個(gè)操作單元的開(kāi)始和結(jié)束定義JTA事務(wù)的邊界即可。
特別注意:如果使用了JTA事務(wù),則不能再用在JDBC式的事務(wù)來(lái)管理每個(gè)Session的操作,否則會(huì)出錯(cuò)。為了程序的的通用性,一般來(lái)說(shuō),都是使用Hibernate JTA事務(wù)來(lái)構(gòu)建應(yīng)用,這使用任何環(huán)境。當(dāng)然,也可以使用事務(wù)代理為每個(gè)JDBC的操作方法加入事務(wù)控制。這樣也為程序以后移植到JTA容器事務(wù)上帶來(lái)很大方便。其實(shí)現(xiàn)在可以使用Spring的事務(wù)管理,與Hibernate結(jié)合的非常***。
當(dāng)前題目:HibernateJDBC事務(wù)學(xué)習(xí)經(jīng)驗(yàn)
URL標(biāo)題:http://www.dlmjj.cn/article/copejjs.html


咨詢(xún)
建站咨詢(xún)
