// 業務方法需要在乙個事物中執行,如果方法執行時,已經存在乙個事物中,
// 那麼加入該事物,否則為自己建立乙個新事物。
@transactional(propagation = propagation.required)
public void test1()
// 宣告方法不需要事務,如果方法沒有關聯到乙個事務,容器不會為它開啟事物。
// 如果方法在乙個事物中被呼叫,該事物會被掛起,在方法呼叫結束後,原先的
// 事物便會恢復執行。
@transactional(propagation = propagation.not_supported)
public void test2()
// 表明不管是否存在事物,業務方法總會為自己發起乙個新事物。
// 如果方法已經執行在乙個事物中,則原有事物會被掛起,
// 新的事物會被建立,直到方法執行結束,新事物才算結束,
// 原先的事務才會被恢復執行。
@transactional(propagation = propagation.requires_new)
public void test3()
// 該屬性指定業務方法只能在乙個已經存在的事物中執行,
// 業務方法不能發起自己的事物,如果業務方法在沒有事物的環境
// 下呼叫,容器就會丟擲異常。
@transactional(propagation = propagation.mandatory)
public void test4()
// 這個事物屬性表明,如果業務方法在某個事務範圍內被呼叫,則方法成為該事物的一部分,
// 如果業務方法在事務範圍外被呼叫,則方法在沒有事物的環境下執行。
@transactional(propagation = propagation.supports)
public void test5()
// 指定業務方法絕對不能在事物範圍內執行。如果業務方法在某個事物中執行,
// 容器會丟擲異常,只有業務方法沒有關聯到任何事物,才能正常執行。
@transactional(propagation = propagation.never)
public void test6()
// 如果乙個活動的事物存在,則執行在乙個巢狀的事物中,如果沒有活動事物,
// 則按required屬性執行,它使用了乙個單獨的事物,這個事物擁有多個回滾的儲存點,
// 內部事務的回滾不會對外事物造成影響,它只對datasourcetransactionmanager
// 事務管理器起效。
@transactional(propagation = propagation.nested)
public void test7()
@transactional(isolation = isolation.default)
public void test8()
// 讀已提交資料(會出現不可重複讀和幻讀)
@transactional(isolation = isolation.read_committed)
public void test9()
// 讀未提交資料(會出現髒讀、不可重複讀和幻讀)
@transactional(isolation = isolation.read_uncommitted)
public void test10()
// 可重複讀(會出現幻讀)
@transactional(isolation = isolation.repeatable_read)
public void test11()
// 序列化
@transactional(isolation = isolation.serializable)
public void test12()
// 丟擲exception異常時,記錄回滾
@transactional(rollbackfor = exception.class)
public void test13() throws exception
// 丟擲exception異常時,記錄不回滾
@transactional(norollbackfor = exception.class)
public void test14() throws exception
spring 中事物的說明
本文主要介紹spring中事務的annotation。專案中某個功能20併發下響應時間為15ms,而期望指標為10ms。功能中包含9條sql,效能診斷初步定位在spring的事務處理上,耗時接近5ms,大致了解了下spring的transactional配置含義。將propagation由propa...
spring事物傳播行為說明
spring在transactiondefinition介面中規定了7種型別的事務傳播行為,規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播。種類說明 propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。pro...
Spring中的事物管理
1.spring中用硬編碼的方式進行事物管理 在需要應用事物的類中引入 private transactiontemplate transactiontemplate public transactiontemplate gettransactiontemplate public void sett...