用 spring 事務管理器,由spring來負責資料庫的開啟,提交,回滾.預設遇到執行期例外
(throw new runtimeexception("注釋");)會回滾:unchecked,需要捕獲的例外(throw
new exception("注釋");)不會回滾:checked.
需要修改規則加入注釋:
@transactional(rollbackfor=exception.class) //指定回滾,需要捕獲的例外(throw
new exception("注釋");)不會回滾
public void methodname()
@transactional(norollbackfor=exception.class)//指定不回滾,遇到執行期例外
(throw new runtimeexception("注釋");)會回滾
public itimdaoimpl getitemdaoimpl()
//事務傳播屬性
@transactional(propagation=propagation.required) //如果有事務,那麼加入事
務,沒有的話新建乙個(不寫的情況下)
@transactional(propagation=propagation.not_supported) //容器不為這個方法
開啟事務
@transactional(propagation=propagation.requires_new) //不管是否存在事務,
都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務
@transactional(propagation=propagation.mandatory) //必須在乙個已有的事務中
執行,否則丟擲異常
@transactional(propagation=propagation.never) //必須在乙個沒有的事務中執
行,否則丟擲異常(與propagation.mandatory相反)
@transactional(propagation=propagation.supports) //如果其他bean呼叫這個方
法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務,那就不用事務.
/*public void methodname()
other失敗了不會影響 本類的修改提交成功
本類update的失敗,other也失敗
*/@transactional(propagation=propagation.nested)
@transactional (propagation =
propagation.required,readonly=true) //readonly=true唯讀,不能更新,刪除
@transactional (propagation = propagation.required,timeout=30)//設定超時時間
@transactional (propagation =
propagation.required,isolation=isolation.default)//設定資料庫隔離級別
spring配置宣告式事務
1 宣告式事務配置 配置 sessionfactory 配置事務管理器 事務的傳播特性 那些類那些方法使用事務 spring事務配置在預設狀態下 只有丟擲執行時異常時才會回滾 2 編寫業務邏輯方法 繼承 hibernatedaosupport 類,使用 hibernatetemplate 來持久化,...
Spring註解宣告式事務配置
一 引入命名空間 二 具有 transactional 註解的bean 自動配置為宣告式事務支援 bean id transactionmanager class org.springframework.orm.hibernate3.hibernatetransactionmanager prope...
Spring配置宣告式事務控制
transactionmanager class org.springframework.jdbc.datasource.datasourcetransactionmanager name datasource ref datasource property bean tx adviceid txm...