Mybatis鏈接池提供了三種配置方式,配置的位置在SqlMapConfig.xml
的dataSource
標籤中,其type屬性就是配置鏈接池的種類。type的可取值java
1.POOLED:數據庫
利用「池」的概念將JDBC鏈接對象組織起來,避免了建立新的鏈接實例時所需的時間。這樣使得應用的 響應速度更加快。安全
POOLED的配置屬性: poolMaximumActiveConnections:任意時間能夠存在的活動鏈接數量,默認值是10. poolMaximummldleConnections: 任意時間可能存在的空閒鏈接數 poolMaximumCheckoutTime: 在被強制返回以前,池中鏈接被檢出時間,默認是20000ms. poolTimeToWait: 若是獲取鏈接花費的時間較長,他會給鏈接池打印狀態日誌並從新獲取鏈接,避免在鏈接失敗的時候一直等待,默認時間20000ms.
2.UNPOOLED:服務器
這個數據源的實現只是每次被請求的時候打開和關閉鏈接,對沒有性能要求的簡單應用程序是能夠的。mybatis
UPOOLED的配置屬性: driver: jdbc驅動的java類徹底限定名。、 url:數據庫的JDBC URL地址。 username:數據庫的登陸名。 password:數據庫的密碼。 defaultTransactionLevel:默認鏈接事務隔離級別。
3.JNDI:併發
這個數據源的實現是爲了能在EJB或應用服務器這類容器中使用,容器能夠集中在或在外部配置數據源, 而後放在一個JNDI上下文的引用。性能
inital_context: 這個屬性是在InitalContext中尋找上下文。 data_source: 這個引用數據源實例位置的上下文路徑。
事務就是對數據訪問,修改,提交等一系列被綁定成一個總體的操做,事務是一個最小的執行單元,不能被分開,要麼同時完成,要麼同時失敗。url
1.原子性(Atomicity):事務是應用中最小的執行單元,不可被分割。日誌
2.一致性(Consistency): 事務的執行結果,必須使數據庫從一種一致性狀態變到另外一種一致性狀態。code
3.隔離性(Isolation):各個事務的執行互不干擾,任意事務的內部操做對其餘併發的事務都是隔離的。
4.持續性(Durability):又叫持久性,即事務一旦提交,對數據的任何修改都會被保存到數據庫。
事務隔離級別 | 髒讀 | 不可重複讀 | 幻讀 | 解釋 |
---|---|---|---|---|
讀未提交(read-uncommitted) | 是 | 是 | 是 | 能夠讀到未提交的事物 |
不可重複讀(read-committed) | 否 | 是 | 是 | 只能讀提交的事物 |
可重複讀(repeatable-read) | 否 | 否 | 是 | 事務提交先後都能讀【MySql默認】 |
串行化(serializable) | 否 | 否 | 否 | serializable時會鎖表,是最安全的,也是平常開發基本不會用 |
1.髒讀:事務A讀取了事務B更新的數據,而後B回滾操做,那麼A讀取到的數據是髒數據
2.不可重複讀:事務 A 屢次讀取同一數據,事務 B 在事務A屢次讀取的過程當中,對數據做了更新並提交,致使事務A屢次讀取同一數據時,結果 不一致
3.幻讀:系統管理員A將數據庫中全部學生的成績從具體分數改成ABCDE等級,可是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺同樣,這就叫幻讀。