目錄
1.什么是事務
2.事務的特性ACID
3.Spring 管理事務的方式
4.Spring管理事務的體現(xiàn):JDBCTemplate
5.聲明式事務的屬性有哪些
6.聲明式事務屬性---只讀
7.聲明式事務屬性---超時
8.聲明式事務屬性---回滾策略
9.聲明式事務屬性---事務隔離級別
10.聲明式事務屬性---事務傳播行為
1.什么是事務
?概念:事務就是一種SQL語句執(zhí)行的緩存機制,不會單條執(zhí)行完畢就更新數(shù)據(jù)庫數(shù)據(jù),最終根據(jù)緩存內(nèi)的多條語句執(zhí)行結(jié)果統(tǒng)一判定:
? ? ? ? 所有執(zhí)行結(jié)果判定成功:觸發(fā)commit提交事務來結(jié)束事務,更新數(shù)據(jù)
? ? ? ? 任意一個執(zhí)行結(jié)果失敗:觸發(fā)rollback回滾結(jié)束事務
優(yōu)勢:允許在失敗情況下,數(shù)據(jù)回到業(yè)務之前的狀態(tài)
2.事務的特性ACID
Atomicity-原子性:事務是一個不可分割的工作單位,事務中的操作要么都執(zhí)行,要么都不執(zhí)行
Consistency-一致性:事務必須使數(shù)據(jù)庫從一個一致性狀態(tài)變換到另外一個一致性狀態(tài)
Isolation-隔離性:事務的隔離性指事務并發(fā)執(zhí)行時,不會被其他事務干擾
Durability-持久性:一個事務一旦被提交,它對數(shù)據(jù)庫數(shù)據(jù)的改變就是永久性的
3.Spring 管理事務的方式
編程式事務:將業(yè)務邏輯一層一層全部代碼實現(xiàn),通常是使用TransactionTemplate手動管理事務,應用很少
聲明式事務:使用xml配置文件或者基于注解管理事務,即使用AOP管理事務;提高了開發(fā)效率,能夠優(yōu)化性能
4.Spring管理事務的體現(xiàn):JDBCTemplate
1.JDBCTemplate的位置:是Spring封裝JDBC后形成的框架---SpringJDBC的一個類
2.為什么需要JDBCTemplate:JDBCTemplate中有各種對數(shù)據(jù)庫增刪改查的方法,方便操作數(shù)據(jù)庫
5.聲明式事務的屬性有哪些
1.屬性有:只讀、超時、回滾策略、事務隔離級別、事務傳播行為
2.設置方式:使用@Transaction注解,設置相對應的屬性
?
6.聲明式事務屬性---只讀
1.設置只讀:
@Transactional(
readOnly = true
)
2.作用:對于一個設置為只讀的查詢操作,數(shù)據(jù)庫就知道該操作不涉及寫操作,從而針對性優(yōu)化
7.聲明式事務屬性---超時
1.設置超時:
@Transactional(
timeout = 3
)
2.作用:在XXXs時間內(nèi)未執(zhí)行完畢就強制回滾;
8.聲明式事務屬性---回滾策略
1.設置回滾
@Transactional(
rollbackFor = Exception.class
rollbackForClassName = java.lang.Exception
noRollbackFor = Exception.class
noRollbackForClassName = java.lang.Exception
)
2. 回滾策略的四個屬性:
????????因為…而回滾:
????????????????rollbackFor屬性:需要設置一個Class類型的對象
????????????????rollbackForClassName屬性:需要設置一個字符串類型的全類名
????????不因為…而回滾:
????????????????noRollbackFor屬性:需要設置一個Class類型的對象
????????? ? ????noRollbackForClassName屬性:需要設置一個字符串類型的全類名
3.作用:以下列代碼為例:
@Transactional(
noRollbackForClassName = java.lang.Exception
)
該代碼的意思是:在事務執(zhí)行的過程中,即使發(fā)生了Exception也不會發(fā)生回滾,事務正常執(zhí)行
?
9.聲明式事務屬性---事務隔離級別
1.設置隔離級別為默認級別(在mysql中為可重復讀)
@Transactional(
isolation = Isolation.DEFAULT
)
2.什么是隔離級別:事務與其他事務的隔離程度;隔離級別越高,數(shù)據(jù)一致性越好,并發(fā)性越弱
3.隔離級別有幾種:
? ? ? ? 從低到高為:讀未提交、讀已提交、可重復讀(默認)、串行化
4.不同的隔離級別產(chǎn)生的臟讀、不可重復讀、幻讀情況
10.聲明式事務屬性---事務傳播行為
1.設置事務傳播行為:表示不管當前線程上是否有已經(jīng)開啟的事務,都要開啟新事務
@Transactional(
propagation = Propagation.REQUIRES_NEW
)
2. propagation(枚舉類)屬性的值有:
????????propagation=Propagation.REQUIRED:默認情況,表示如果當前線程上有已經(jīng)開啟的事務可用,那么就在這個事務中運行。文章來源:http://www.zghlxwxcb.cn/news/detail-511064.html
??????? propagation=Propagation.REQUIRES_NEW:表示不管當前線程上是否有已經(jīng)開啟的事務,都要開啟新事務文章來源地址http://www.zghlxwxcb.cn/news/detail-511064.html
到了這里,關(guān)于Spring管理事務知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!