在hibernate.cfg.xml配置程序里的默認事務并發處理級別:
<property name="connection.isolation">2</property>

為了考慮并發的效率,推薦使用級別2(TRANSACTION_READ_UNCOMMITTED),但是存在重復讀問題(non-reapeatable reads)和幻讀(phantom reads)問題。
在Hibernate中為了解決重復讀問題(non-reapeatable reads)問題,可以使用悲觀鎖、樂觀鎖兩種方法來解決。
用悲觀鎖解決 repeatable read 的問題(依賴于數據庫的鎖)
LOCKMODE.UPGRADE

悲觀鎖
使用數據庫的鎖,如:
select * from test for update(Oracle)
/////////////////////////////////////
 select
        account0_.id as id0_0_,
        account0_.balance as balance0_0_
    from
        Account account0_ with (updlock,
        rowlock)
    where
        account0_.id=?
(SQL SERVER)

樂觀鎖
程序員自己加字段,來記錄版本信息,當事務1查詢數據后,事務2對數據產生變化時,版本號自動加1,當事務1提交事務時會檢測版本號是否一致,如果不一致則報錯。效率要比悲觀鎖高。