Hibernate--事務處理和快取管理
事務處理:
事務是資料庫操作中一個最小的執行單元,它由一組相互依賴的操作行為組成。資料庫事務必須具有ACID特徵,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(永續性)的英文縮寫。
原子性:是指整個資料庫事務是一個不可分割的工作單元。只有事務中所有操作執行成功,該事務才算執行成功。
一致性:是指事務不能破壞關係資料的完整性和業務邏輯上的一致性。
隔離性:事務的隔離性要求事務訪問的任何資料不會受到其他事務所做的任何改變的影響,直到該事務完成。(鎖機制)
永續性:是指只要事務成功結束,它對資料庫所做的操作必須永久儲存下來。
資料庫的隔離級別:資料庫系統提供了4種事務隔離的級別供使用者選擇。(通過hibernate.connection.isolation屬性來設定隔離級別。)
1,Serializable(序列化)
2,Repeated Read
3,Read Committed
4,Read Uncommitted
快取管理:
Session快取是內建的,被稱為Hibernate的一級快取;SessionFactory的外接快取是可以插拔的快取外掛,它被稱為Hibernate的二級快取。Hibernate使用快取策略去實現持久化物件和資料庫的同步更新,並且快取可以很大程度上提升查詢的速度。
第一級快取儲存了和Session物件相關的持久化層(JavaBean)例項。Hibernate提供了兩個管理該快取的方法。
evict(Object obj):從快取中清除引數obj指定的持久化 物件。
clear():清空快取中所有的持久化物件。
一般情況下,當不希望session繼續根據某個物件狀態的變化來同步更新資料庫時,可以使用evict()把該物件從快取中清除。這樣,這個物件就變成了遊離狀態了。Hibernate不會把它的變化存入資料庫。