事務管理器
mybatis(jdbcteamplate))的事務管理器: datasourcetransactionmanager
hibernate事務管理器:hibernatetransactionmanager
事務的基本特性(acid)
原子性:乙個事務要麼都提交要麼都不提交
一致性:ab轉賬事務提交後總金額不發生改變
隔離性:事務隔離級別
read uncommitted 讀未提交
存在:髒讀 不可重複讀 幻讀
讀取了另乙個事務未提交的資料
read committed讀已提交
存在:不可重複讀 幻讀
解決了髒讀 讀已提交,乙個事務讀到另乙個事務已經提交的資料。
repeatable read:可重複讀
存在: 幻讀,針對 insert操作
乙個事務中讀到的資料始終保持一致,無論另乙個事務是否提交
serializable:序列化
只能執行乙個事務
永續性:乙個事務一旦提交,它對資料庫中資料的改變應該是永久性的
事務的傳播 方法a 呼叫方法b ab中的事務的傳播
@transactional(propagation(傳播) = propagation.required)
required:沒有事務建立 有加入事務
supports:有事務就用沒有就不用
一般情況下,生產環境中都是使用預設的required
唯讀事務:優化手段
@transactional(readonly = true)用於查詢
重點 宣告事務
事務管理器 資料來源 切面(切點+增強)
xml配置事務:
//事務管理器
//資料來源
//配置增強處理
註解配置宣告式事務:
@transactional註解
指定類 方法都開啟事務
指定方法 只有這個方法開啟 (可以和類相互配合 優先選擇類)
//查詢propagation傳播方式 readonly唯讀 isolation隔離級別mysql預設repeatable_read(重複讀)
@transactional(propagation = propagation.supports,readonly = true,isolation = isolation.default)
//增刪改
@transactional(propagation = propagation.required,readonly = false,isolation = isolation.repeatable_read)
jdbctemplate
spring提供用於連資料庫
設計模式
工廠模式 beanfactory
單例模式 scope指定
動態** aop底層使用jdk動態**和cglib動態**
模板方法模式 jdbctemplate物件,應用了模板方法模式
Spring事務的一些特性
1.原子性 乙個事務中所有對資料庫的操作是乙個不可分割的操作序列,要麼全做要麼全不做 2.一致性 資料不會因為事務的執行而遭到破壞 3.隔離性 乙個事物的執行,不受其他事務的干擾,即併發執行的事物之間互不干擾 4.永續性 乙個事物一旦提交,它對資料庫的改變就是永久的 1.default 預設的事務隔...
Spring事務的一些特性
1.原子性 乙個事務中所有對資料庫的操作是乙個不可分割的操作序列,要麼全做要麼全不做 2.一致性 資料不會因為事務的執行而遭到破壞 3.隔離性 乙個事物的執行,不受其他事務的干擾,即併發執行的事物之間互不干擾 4.永續性 乙個事物一旦提交,它對資料庫的改變就是永久的 1.default 預設的事務隔...
CArrary SetSize及陣列一些使用發現
carray 使用不當會產生記憶體碎片,應先呼叫setsize 但具體怎麼用還不是太清楚,先看 執行結果 1,0x2bcf58,0x2bcf98,2 2,0x2b9e78,0x2b9e78,2 3,0x2b9ec0,0x2b9ec0,80 從以上結果看出,第一種方法未用setsize是錯的,執行ar...