Spring事务管理的三个核心接口

Spring事务管理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus

Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。

在 Java EE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。

在 Spring 解压包的 libs 目录中,包含一个名称为 spring-tx-3.2.13.RELEASE.jar 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务管理的三个核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。

将该 JAR 包的后缀名 jar 改成 zip 的形式后,解压压缩包,进入解压文件夹中的 \org\springframework\transaction 目录后,该目录中的文件如图 1 所示。

图 1 事务管理核心接口

在图 1 中,方框所标注的三个文件就是本节将要讲解的核心接口。这三个核心接口的作用及其提供的方法如下。

PlatformTransactionManager 接口是 Spring 提供的平台事务管理器,用于管理事务。该接口中提供了三个事务操作方法,具体如下。

在项目中,Spring 将 xml 中配置的事务详细信息封装到对象 TransactionDefinition 中,然后通过事务管理器的 getTransaction() 方法获得事务的状态(TransactionStatus),并对事务进行下一步的操作。

TransactionDefinition 接口是事务定义(描述)的对象,它提供了事务相关信息获取的方法,其中包括五个操作,具体如下。

在上述五个方法的描述中,事务的传播行为是指在同一个方法中,不同操作前后所使用的事务。传播行为的种类如表 1 所示。

表 1 传播行为的种类

在事务管理过程中,传播行为可以控制是否需要创建事务以及如何创建事务。

通常情况下,数据的查询不会改变原数据,所以不需要进行事务管理,而对于数据的增加、修改和删除等操作,必须进行事务管理。如果没有指定事务的传播行为,则 Spring3 默认的传播行为是 required。

TransactionStatus 接口是事务的状态,它描述了某一时间点上事务的状态信息。其中包含六个操作,具体如表 2 所示。

表 2 事务的操作

  • Spring浜嬪姟绠$悊鐨勪笁涓牳蹇鎺ュ彛
    绛旓細鍦 Spring 瑙e帇鍖呯殑 libs 鐩綍涓紝鍖呭惈涓涓悕绉颁负 spring-tx-3.2.13.RELEASE.jar 鐨勬枃浠讹紝璇ユ枃浠舵槸 Spring 鎻愪緵鐨勭敤浜庝簨鍔$鐞嗙殑 JAR 鍖咃紝鍏朵腑鍖呮嫭浜嬪姟绠$悊鐨勪笁涓牳蹇鎺ュ彛锛歅latformTransactionManager銆乀ransactionDefinition 鍜 TransactionStatus銆傚皢璇 JAR 鍖呯殑鍚庣紑鍚 jar 鏀规垚 zip 鐨勫舰寮忓悗锛岃В鍘嬪帇...
  • 涓鏂囧甫浣犺璇Spring浜嬪姟
    绛旓細Spring浜嬪姟绠$悊鐨勬牳蹇冨湪浜嶢OP锛堥潰鍚戝垏闈㈢紪绋嬶級鐨勫姩鎬佷唬鐞銆傚綋鍦ㄧ被涓婃坊鍔燖Transactional娉ㄨВ鏃讹紝Spring浼氬垱寤轰竴涓唬鐞嗗璞★紝鍗充娇鍦ㄩ潪浜嬪姟鏂规硶涓洿鎺ヨ皟鐢紝涔熶笉浼氬惎鍔ㄤ簨鍔°備絾閫氳繃浠g悊璋冪敤鏈変簨鍔℃柟娉曟椂锛屼簨鍔$殑浼犳挱瑙勫垯灏变細鐢熸晥锛屽宓屽浜嬪姟鐨勫鐞嗐傛祴璇曠粨鏋滄樉绀猴紝璋冪敤鍚屼竴绫诲唴鐨勬棤浜嬪姟鏂规硶涓嶄細鍚姩浜嬪姟锛岃岃皟鐢ㄥ叾...
  • Spring妗嗘灦涓鐨勪笁澶ф牳蹇鎬濇兂鏄粈涔?
    绛旓細渚濊禆娉ㄥ叆锛屽弽杞帶鍒讹紝鍒囬潰缂栫▼
  • spring鏍稿績鐨勭煡璇
    绛旓細IOC锛圛nversion of Control锛夋帶鍒跺弽杞細瀹冩槸Spring鐨勬牳蹇锛屾槸涓绉嶅皢缁勪欢渚濊禆鍏崇郴鐨勫垱寤哄拰绠$悊缃簬绋嬪簭澶栭儴鐨勬妧鏈傛牴鎹垜涓汉鐨勪娇鐢ㄦ槸杩欎箞鐞嗚В鐨勶細濡傛灉鐢↖OC,涓涓被A涓鏋滆鐢ㄥ埌鍏朵粬绫籅鐨勫姛鑳斤紝蹇呴』鍦ㄦ湰绫讳腑鍐欏叆B锛屽悓鏃跺0鏄庡璞 b= new B()锛岃皟鐢ㄦ柟娉曪紱鑰屽鏋滀娇鐢↖OC鍚庯紝杩欓噷鐨刵ew B()灏变笉蹇呭湪杩...
  • spring鐨勪簨鍔鏈哄埗,浠ュ強鏄浣绠$悊鐨
    绛旓細Spring浜嬪姟绠$悊涓昏鍖呮嫭3涓鎺ュ彛锛孲pring鐨勪簨鍔′富瑕佹槸鐢变粬浠涓変釜鍏卞悓瀹屾垚鐨勩1锛塒latformTransactionManager锛氫簨鍔$鐞嗗櫒--涓昏鐢ㄤ簬骞冲彴鐩稿叧浜嬪姟鐨绠$悊 涓昏鏈変笁涓柟娉曪細commit 浜嬪姟鎻愪氦锛況ollback 浜嬪姟鍥炴粴锛沢etTransaction 鑾峰彇浜嬪姟鐘舵併2锛塗ransactionDefinition锛氫簨鍔″畾涔変俊鎭--鐢ㄦ潵瀹氫箟浜嬪姟鐩稿叧鐨勫睘鎬э紝缁...
  • Spring涓殑浜嬪姟浼犳挱灞炴ц瑙
    绛旓細鍦ㄤ娇鐢⊿pring鏃 澶ч儴鍒嗕細鐢ㄥ埌浠栫殑澹版槑寮忎簨鍔 绠鍗曠殑鍦ㄩ厤缃枃浠朵腑杩涜涓浜涜鍒欓厤缃 鍒╃敤Spring鐨凙OP鍔熻兘灏辫兘杞绘澗鎼炲畾浜嬪姟闂 杩欓噷闈㈠氨娑夊強鍒颁竴涓簨鍔$殑浼犳挱灞炴ч棶棰楶ropagation 瀹冨湪TransactionDefinition鎺ュ彛涓畾涔 浠ヤ緵PlatfromTransactionManager浣跨敤 PlatfromTransactionManager鏄spring浜嬪姟绠$悊鐨勬牳蹇鎺ュ彛 Transaction...
  • Spring瀹炴垬鍐呭绠浠
    绛旓細鎺у埗鍙嶈浆锛圛oC锛夋妧鏈槸Spring鐨勬牳蹇锛屽畠閫氳繃鍦ㄥ璞″垵濮嬪寲鏃朵富鍔ㄤ紶閫掍緷璧栵紝瀹炵幇瀵硅薄闂寸殑鏉捐﹀悎銆傝繖涓庝紶缁熺殑JNDI涓嶅悓锛屽悗鑰呮槸瀵硅薄涓诲姩瀵绘壘渚濊禆銆係pring鍏佽寮鍙戣呬笓娉ㄤ簬涓氬姟閫昏緫锛岃岀郴缁熺骇鏈嶅姟濡傚璁″拰浜嬪姟绠$悊鍒欑敱Spring澶勭悊銆係pring瀹瑰櫒璐熻矗閰嶇疆鍜岀鐞嗗簲鐢ㄥ璞★紝鍖呮嫭鍒涘缓鏂瑰紡锛堝崟渚嬫垨鍘熷瀷锛夊拰瀵硅薄涔嬮棿鐨勫叧绯汇
  • Spring闈㈣瘯璧勬枡8:澹版槑寮浜嬪姟
    绛旓細鍦↗avaEE涓栫晫涓紝鏁版嵁鐨勫畬鏁存у拰涓鑷存ф槸鍩虹煶锛浜嬪姟绠$悊灏辨槸缁存姢杩欎竴鍩虹煶鐨勯噸瑕佹敮鏌便備簨鍔℃槸涓绯诲垪鐩稿叧鎿嶄綔鐨勯泦鍚堬紝瀹冨繀椤绘弧瓒冲師瀛愭с佷竴鑷存с侀殧绂绘у拰鎸佷箙鎬у洓澶х壒鎬э紝纭繚鏁版嵁鍦ㄦ搷浣滆繃绋嬩腑鐨勬纭сSpring妗嗘灦鎻愪緵浜嗕袱绉嶄簨鍔$鐞嗙瓥鐣ワ細缂栫▼寮忓拰澹版槑寮忥紝鍏朵腑TransactionManager鎶借薄鏄鏍稿績锛屽寘鎷珼ataSource...
  • Spring浜嬪姟绠$悊-瓒呰缁
    绛旓細搴曞眰浣跨敤AOP鍘熺悊锛 Spring鎻愪緵涓涓帴鍙latformTransactionManager锛屼唬琛浜嬪姟绠$悊鍣紝涓嶅悓鐨勬鏋舵彁渚涗笉鍚岀殑瀹炵幇绫汇傛蹇碉細 澶氫釜浜嬬墿鏂规硶闂磋繘琛岃皟鐢紝杩欎釜杩囩▼涓簨鍔℃槸濡備綍绠$悊鐨 (2). isolution锛氫簨鐗╅殧绂荤骇鍒 鍦ㄩ珮骞跺彂鐨勬儏鍐典笅锛屽鏋滀笉鑰冭檻浜嬪姟鐨勯殧绂绘у皢浼氫骇鐢熶互涓涓変釜闂锛氳剰璇汇佷笉鍙噸澶嶈銆佽櫄锛堝够锛...
  • java涓Spring鏄粈涔?
    绛旓細鎵浠,Spring 闈㈠悜鍒囬潰缂栫▼鑳藉府鍔╂垜浠棤鑰﹀悎鐨勫疄鐜版棩蹇楄褰,鎬ц兘缁熻,瀹夊叏鎺у埗銆 涓夈佸湪浼犵粺搴旂敤绋嬪簭褰撲腑,鎴戜滑濡備綍鏉ュ畬鎴愭暟鎹簱浜嬪姟绠$悊?闇瑕佷竴绯诲垪鈥滆幏鍙栬繛鎺,鎵цSQL,鎻愪氦鎴栧洖婊氫簨鍔,鍏抽棴杩炴帴鈥,鑰屼笖杩樿淇濊瘉鍦ㄦ渶鍚庝竴瀹氳鍏抽棴杩炴帴,澶氫箞鍙曠殑浜嬫儏,鑰屼笖涔熷緢鏃犺亰;濡傛灉閲囩敤Spring,鎴戜滑鍙渶鑾峰彇杩炴帴,鎵цSQL,鍏朵粬鐨勯兘浜ょ粰...
  • 扩展阅读:spring事务失效8种场景 ... spring注解失效场景 ... spring事务是如何回滚的 ... spring事务原理与实现 ... spring事务的底层原理 ... spring事务不生效的场景 ... spring事务有哪几种 ... spring事务两个方法调用 ... spring 事务原理解析 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网