一桶唐,事務的性質(zhì)
事務具有ACID屬性缰儿,為了使其達到這些性質(zhì)的要求元镀,于是產(chǎn)生了相關的編程規(guī)范
????1.原子性
????2.一致性:? 事務操作前后,數(shù)據(jù)庫的狀態(tài) 均處于一致性
????3.隔離性:? 在并發(fā)處理中掌测,事務之間互不干擾
????4.持久性:? 一個事務一旦提交内贮,其操作結(jié)果就永遠保持下來
二,事務的實現(xiàn)原理
????1.將默認屬性autocommit(自動提交)設置為false:? 事務中的每一個操作不自動提交
????2.調(diào)用commit來提交汞斧, 使sql語句的操作在數(shù)據(jù)庫上產(chǎn)生效果
????3.若該部分操作出現(xiàn)問題夜郁,使用rollback,回滾到上一個數(shù)據(jù)庫穩(wěn)定狀態(tài)
????一個注意點:
????????關閉connection連接,會自動提交事務粘勒,所以在同一個事務中竞端,共用一個connection對象。
三庙睡,事務隔離的級別
事務中可能出現(xiàn)的問題:
????1.臟讀: 讀取到未提交的值
????2.不可重復讀: 兩次對同一字段讀取到的值不一致
????3.幻讀: 兩次對同一個表的訪問不一致(增加數(shù)據(jù)記錄)
由此產(chǎn)生的隔離級別:
????1.讀未提交:? 可以讀去未被提交的值
????2.讀已提交: 解決了臟讀
????3.可重復讀: 解決了不可重復度
????4.串行化: 解決了幻讀
實現(xiàn)方法:
????????//獲取當前連接的隔離級別
????????System.out.println(conn.getTransactionIsolation());
????????//設置數(shù)據(jù)庫的隔離級別:
????????conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
四事富,DAO類實現(xiàn)的思想
????1.一個基類BaseDAO定義為抽象類技俐,供每個數(shù)據(jù)對象類繼承,其中實現(xiàn)最底層的操作
????2.數(shù)據(jù)庫中每一類數(shù)據(jù)對應一個 類 统台,定義該類的接口雕擂,其中聲明該類頂層的方法
????3.定義子類,繼承BaseDAO基類贱勃,實現(xiàn)數(shù)據(jù)接口井赌,其中使用BaseDAO中的底層操作來實現(xiàn)接口中的方法
? ? 注意點:? 通過獲取父類的泛型,使BaseDAO基類在每一次被繼承后贵扰,立馬被標記為子類的DAO仇穗,于是操作中返回的數(shù)據(jù)對象,可直接使用泛型對象存儲戚绕,不需要在傳遞對象來標記