<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及其他
    主站蜘蛛池模板: 免费一级特黄特色大片在线观看| 曰批视频免费40分钟试看天天| 日韩免费高清视频网站| 亚洲国产综合精品| 国产亚洲AV手机在线观看| 欧美亚洲精品一区二区| a毛片久久免费观看| 免费在线视频你懂的| 亚洲天堂福利视频| 2020久久精品国产免费| 日韩精品亚洲aⅴ在线影院| 一个人看的hd免费视频| 国产成人亚洲精品狼色在线| 岛国精品一区免费视频在线观看| 亚洲人成色77777在线观看大| 国产又黄又爽胸又大免费视频| 亚洲热线99精品视频| 久久免费的精品国产V∧| 亚洲国产综合精品| 在线免费观看污网站| 青青免费在线视频| 亚洲精品国产精品乱码在线观看| MM1313亚洲国产精品| 亚洲成人高清在线| 丝瓜app免费下载网址进入ios| 老司机亚洲精品影院| 免费看国产成年无码AV片| 老司机福利在线免费观看| 亚洲一区二区三区AV无码| 97在线视频免费播放| 青青草原精品国产亚洲av| 人禽杂交18禁网站免费| 污污视频免费观看网站| 国产小视频在线观看免费| 国产成人精品日本亚洲专区6| 最近新韩国日本免费观看| 国产成人亚洲综合一区| 亚洲宅男天堂在线观看无病毒| 亚欧在线精品免费观看一区| 亚洲av纯肉无码精品动漫| 亚洲va无码专区国产乱码|