(1)spring提供了程式設計式事務支援 transactiontemplate;
(2)也提供了宣告式事務支援 底層採用aop實現的事務通知bean;
(3)也有註解形式的 @transactional
為不同的方式設定不同的事務屬性
()
上述execution(* com.hofon.serviceimpl.***serviceimpl.*(..))表示式表示切入點為該類中的任何方法。所以當***serviceimpl類中方法呼叫時就會進行事務管理
,並且當丟擲runtimeexception或者exception時(看具體方法名),自動進行回滾操作。
或者(hibernate)
<?xml version= "1.0" encoding= "utf-8" ?>
(3)使用@transactional註解來實現宣告式事務
①引入命名空間 ,在spring的配置檔案中修改, beans根元素裡多了三行,如下
<?xml version="1.0" encoding="utf-8"?>
②配置事務管理器transactional和開始事務的註解支援
③ 在介面或類的宣告處 ,寫乙個@transactional. 要是只在介面上寫, 介面的實現類就會繼承下來.在
介面的實現類的具體方法上,還可以覆蓋類宣告處的設定.
當作用於類上時,該類的所有 public 方法將都具有該型別的事務屬性,同時,我們也可以在方法級別使用該註解來覆蓋類級別的定義。
//在service類上的註解
@transactional
@service
@scope("prototype")
public class newsserviceimpl implements newsservice
}
plus: @transaction註解事務不起作用
1、檢查你方法是不是public的
2、 你的異常型別是不是unchecked異常 ,預設執行時異常runtimeexception才回滾
要想所有異常都回滾,註解上面寫明異常型別即可
@transactional(rollbackfor=exception.class)
類似的還有norollbackfor,自定義不回滾的異常
3、資料庫引擎要支援事務,如果是mysql,注意表要使用支援事務的引擎,比如innodb,如果是myisam,事務是不起作用的
4、是否開啟了對註解的解析
5、spring是否掃瞄到你這個包,如下是掃瞄到com.hofon下面的包,必須是spring裡配置的bean才起作用?
com.hofon" >
Spring事務管理
spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...
spring事務管理
一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...
spring 事務管理
和資料庫打交道的碼農都知道事務,事務有4大特徵,分別是原子性,一致性,隔離性,永續性。而spring 對事物提供了良好的支援,和api,通過簡單的配置,則可以減低程式設計師重複的操作。1.原子性 原子性指的是乙個事務內的所有操作要麼全部應用到資料庫,要麼取消對資料庫的操作。2.一致性 一致性和原子性...