事務的概念
事務是訪問數據庫時,可能更新數據庫中各種數據項的一個程序執行單元,用來確保數據的完整性,避免數據庫中的數據在不正確的操作下引起的錯誤更改。
事務的4個特性
1.原子性。指事務執行單元是一個不可分割的單元,這些單元要麼都執行,要麼都不執行。
2.一致性。指無論執行了什麼操作,都應該保證數據的完整性和業務邏輯的一致性。
3.隔離性。在事務執行過程中,多個執行單元間操作的數據都是其它單元沒有操作或者操作結束後的數據,保證每一個執行單元操作的數據都有完整的數據空間。
4.持久性。事務結束後,執行單元操作的數據被保存在數據庫中,這些數據的保存狀態是永久性的,不會因為系統故障而消失。
Hibernate框架中支持兩種事務處理方式
(1) JDBC事務處理 (2) JTA (Java Transaction API)事務處理
這兩種事務處理方式默認情況下都是關閉的,可以通過配置開啟事務管理,如果不進行配置,會默認使用JDBC事務。
(1)編程過程中應用JDBC事務管理的流程
1.實例化Configure類讀取配置文件或者屬性文件
2.獲取sessionFactory實例
3.通過sessionFactory獲得session實例
4.通過session.beginTransaction()獲得事務Transaction對象
5.開始事務,進行數據操作
6.提交事務,數據處理結束後提交事務
7.回滾事務,如果數據處理出現異常則回滾事務,恢復原始數據
8.提交事務,關閉session
(2)編程過程中應用JTA事務管理的流程
概念--JTA是J2EE事務服務的標准解決方式,通過容器來控制事務。主要應用在多數據庫操作的分布式系統中。JTA事務處理首先創建事務處理對象,然後實例化Session,它的事務生命周期要比session的生命周期長。另外,JTA事務處理和JDBC事務處理不能同時使用。流程如下:
1.創建JTA事務對象
2.開始事務
3.獲得session並編寫操作數據的方法
4.關閉session
5.提交事務
6.如果遇到到異常事件則回滾事務