<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    事務(wù)處理:
    Hibernate本身并不具備事務(wù)管理能力。在事務(wù)管理層,Hibernate將其委托給底層的JDBC或者JTA,以實(shí)現(xiàn)事務(wù)的管理與調(diào)度。

    基于JDBC的事務(wù):
    無疑是最簡(jiǎn)單的實(shí)現(xiàn)方式,
    session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    tx.commit();

    基于JTA的事務(wù)管理:
    hibernate默認(rèn)采用JDBC Transacion。可以通過配置文件指定采用JTA作為事務(wù)管理實(shí)現(xiàn)。
    <hibernate-configuration>
    ??? <session-factory>
    ??????? ......
    ??????? <property name="hibernate.transaction.factory_class">
    ??org.hibernate.transaction.JTATransactionFactory
    ??????? </property>
    ??? </session-factory>
    </hibernate-configuration>

    鎖(locking)
    支持兩種鎖:悲觀鎖和樂觀鎖

    悲觀鎖(Pessimistic locking):
    數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
    select * from account where name='yyy' for update
    通過for update子句,這條語(yǔ)句鎖定所有符合條件的記錄,在本次事務(wù)提交之前,外界無法修改這些記錄。

    hibernate的實(shí)現(xiàn),也是基于數(shù)據(jù)庫(kù)的鎖機(jī)制實(shí)現(xiàn):
    加鎖一般通過以下方法實(shí)現(xiàn):
    Criteria.setLockMode
    Query.setLockMode
    Session.lock

    hibernate的加鎖模式:
    LockMode.NONE:無鎖機(jī)制
    LockMode.WRITE:hibernate在Insert和update時(shí),會(huì)自動(dòng)獲取
    LockMode.READ:hibernate在讀取記錄的時(shí)候,會(huì)自動(dòng)獲取
    以上3種,由hibernate內(nèi)部使用。

    LockMode.UPGRADE:利用數(shù)據(jù)庫(kù)的for update子句加鎖
    LockMode.UPGRADE_NOWAIT:oracle特定實(shí)現(xiàn),利用oracle的for update nowait子句實(shí)現(xiàn)加鎖。

    樂觀鎖(Optimistic locking):
    hibernate在其數(shù)據(jù)訪問引擎中內(nèi)置了樂觀鎖實(shí)現(xiàn)。可以通過class描述符的optimistic-lock屬性結(jié)合version描述符指定。

    <hibernate-mapping>
    ??? <class
    ??????? name="org.hibernate.sample.TUser"
    ??????? table="t_user"
    ??????? dynamic-update="true"
    ??????? dynamic-insert="true"
    ??????? optimistic-lock="version"
    ??? >
    ???? <id>......
    ???? </id>
    ????? <version
    ???????? column="version"
    ???????? name="version"
    ???????? type="java.lang.Integer"
    ????? />
    ??? </class>
    </hibernate-mapping>
    注意,version節(jié)點(diǎn)要在ID節(jié)點(diǎn)之后。
    這里,聲明了一個(gè)version屬性,用于存放用戶的版本信息,保存在T_User表的version字段中。

    posted on 2006-07-16 10:18 knowhow 閱讀(1336) 評(píng)論(0)  編輯  收藏 所屬分類: ORM:Hibernate及其他
    主站蜘蛛池模板: 亚洲高清视频免费| 伊人婷婷综合缴情亚洲五月| 2020因为爱你带字幕免费观看全集 | 精品在线免费视频| 亚洲精品美女久久久久| 亚洲人成欧美中文字幕| 黄网站色视频免费看无下截| 四虎影视永久免费视频观看| 亚洲精品无码高潮喷水在线| 亚洲综合偷自成人网第页色| 一级特级女人18毛片免费视频| 99久久免费看国产精品| 四虎影视www四虎免费| 国产AV无码专区亚洲AV漫画| jizz免费在线观看| 黄瓜视频高清在线看免费下载| 久久精品国产亚洲5555| 亚洲码欧美码一区二区三区| 免费国产一级特黄久久| 亚洲毛片免费视频| 曰皮全部过程视频免费国产30分钟| 久久精品国产96精品亚洲 | 人妻无码中文字幕免费视频蜜桃| 久久久久久AV无码免费网站| 免费萌白酱国产一区二区| 一区二区三区免费精品视频| 亚洲国产精品VA在线看黑人 | 麻豆成人久久精品二区三区免费| 亚洲国产美女在线观看| 香蕉成人免费看片视频app下载 | 亚洲精品国产第1页| 免费观看大片毛片| 亚洲中文字幕久久无码| 成人黄色免费网站| 亚洲AV无码成人专区片在线观看 | 亚洲国产主播精品极品网红| 亚洲人成电影网站免费| 亚洲日韩中文在线精品第一| 猫咪www免费人成网站| 亚洲成色999久久网站| 成人久久免费网站|