hibernate交易處理和鎖

來源:互聯網
上載者:User
交易處理:
Hibernate本身並不具備交易管理能力。在交易管理層,Hibernate將其委託給底層的JDBC或者JTA,以實現事務的管理與調度。

基於JDBC的事務:
無疑是最簡單的實現方式,
session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
tx.commit();

基於JTA的交易管理:
hibernate預設採用JDBC Transacion。可以通過設定檔指定採用JTA作為交易管理實現。
<hibernate-configuration>
    <session-factory>
        ......
        <property name="hibernate.transaction.factory_class">
   org.hibernate.transaction.JTATransactionFactory
        </property>
    </session-factory>
</hibernate-configuration>

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

悲觀鎖(Pessimistic locking):
資料庫的實現
select * from account where name='yyy' for update
通過for update子句,這條語句鎖定所有合格記錄,在本次事務提交之前,外界無法修改這些記錄。

hibernate的實現,也是基於資料庫的鎖機制實現:
加鎖一般通過以下方法實現:
Criteria.setLockMode
Query.setLockMode
Session.lock

hibernate的加鎖模式:
LockMode.NONE:無鎖機制
LockMode.WRITE:hibernate在Insert和update時,會自動擷取
LockMode.READ:hibernate在讀取記錄的時候,會自動擷取
以上3種,由hibernate內部使用。

LockMode.UPGRADE:利用資料庫的for update子句加鎖
LockMode.UPGRADE_NOWAIT:oracle特定實現,利用oracle的for update nowait子句實現加鎖。

樂觀鎖(Optimistic locking):
hibernate在其資料訪問引擎中內建了樂觀鎖實現。可以通過class描述符的optimistic-lock屬性結合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節點要在ID節點之後。
這裡,聲明了一個version屬性,用於存放使用者的版本資訊,儲存在T_User表的version欄位中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.