Hibernate第五講:Hibernate控制的事務

 Hibernate控制的事務

    事務保證原子操作的不可分,也就是操作的同時成功或同時失敗。
    hibernate的事務隔離級別和JDBC中大致相同。
        設置時要在hibernate.cfg.xml配置
        <property name="hibernate.connection.isolation">4</property>
        1: 讀未提交的數據(Read uncommitted isolation) 髒讀
        2: 讀已提交的數據(Read committed isolation)   不可重複讀
        4: 可重複讀級別(Repeatable read isolation)    幻讀
        8: 可串行化級別(Serializable isolation)
    hibernate的鎖(悲觀鎖,樂觀鎖)
      1.悲觀鎖是由數據庫本身所實現的,會對數據庫中的數據進行鎖定,也就是鎖行。(更新期間不許其他人更改)
        LockMode.UPGRADE,修改鎖,在get()方法中加上這個設置作爲第三個參數。
        LockMode.NONE 無鎖機制
        LockMode.READ 讀取鎖
        LockMode.WRITE 寫入鎖,不能在程序中直接使用
        還可以使用Session.lock()  Query.setLockMode()  Criteria.setLockMode()方法來設置鎖,
        檢測版本號,一旦版本號被改動則報異常。
      2.樂觀鎖,也就是通過對記錄加上某些信息來解決併發訪問的問題。(認爲更新期間不會有其他更改)
        版本檢查;要在其表中多加上一列表示版本信息,會在讀取時讀到這個版本號,並在修改之後更新這個版本號;
        更新瞬間加鎖,並且只有版本號相同纔會予以更新,如果版本號不同,就會拋出例外。
        <version name="version" column="version" type="integer" />

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章