配製無限制的Spring事務管理

2021-08-30 03:23:29 字數 2059 閱讀 2810

目錄:v1.0

1.舊時的痛

2.光明來臨前的黑暗

3.歡迎救世主

1.舊時的痛

為什麼說配製無限制的spring事務管理呢,估計肯定有哪位高手看過標題之後就會奇怪,配製事務管理還要有什麼限制嗎?

當然對您這樣的高手當然是運用自如。但是還是和很多初識者甚至有很長的工作經驗的朋友的老鳥對spring配製只停留在spring1.x

階段,並且僅限於配製spring+hibernate的事務管理。

最經典的spring+hibernate的配製是這樣的:

在使用時為每個service加入事務模版,其實這種方式已經很方便了,

但是限制了使用者的視野,讓很多初學者誤認為spring的事務只針對hibernate準備的。

這是spring1.0時代的產物,深深的留下了持久層框架的烙印。

2.光明來臨前的黑暗

實際上spring提供了多種事務管理器以供使用,而其中的一種才是hibernate的,如下:

事務管理器的例項 目標

org.springframwork.jdbc.datasource.datasourcetransactionmanager

用dbc的 datasource 去管理事務

org.springframwork.orm.hibernate.hibernatetransactionmanager

當持久機制是hibernate時的事務管理器

org.springframework.orm.jdotransactionmanager

當持久機制是jdo時的事務管理器

org.springframework.transaction.jta.jtatransactionmanager

用jta管理事務

org.springframwork.orm.ojb.persistencebrokertransactionmanager

當持久機制是apache的ojb時的事務管理器

也就是說以下配製中的class使用不同的事務管理器可以應用在不同的持久層機制上,其中的

datasourcetransactionmanager是最為通用的管理器。

有很多人在論壇裡問:在hibernate中是這樣配製事務管理的,那麼在某某下是如何配製呢,問的人不深問題的本身,而是只注重於解決事情的方式上。

3.歡迎救世主

下面來介紹一下在spring2.x達到相同的通用方式,並且配製起來更簡潔和靈活的方式,當然和上面一樣通用的方式就要使用通用的資料來源(

datasource管理器

)。

你會發現根本不需要事務模版了,由正規表示式來限定對service的事務管理:pointcut="execution(* *..service.*manager.*(..))" 

這樣的方式是不是使你忘記了spring中使用了什麼持久層框架,是的,這時你就自由了!~

是不是想問我用了什麼框架,我可以很負責任的告訴你是ibatis,你是不是沒有看出來呢

下面是service的配製,在service中注入dao,在dao中注入sqlmapclientfactorybean。

好了,到些為止吧。

由於個人的技術和知識水平有限,難免有疏漏之處,請指正!

Extjs TreeStore無限制載入資料的問題

ext.define mykaidun.model.sys.menusmodel ext.create ext.data.treestore url menuaction menusroleid.action reader 由於本人想一次性載入所以不想非同步載入,本人後台用的是struts2 但是後...

C RSA加密,無限制長度

rsa加密,無限制長度 rsa加密 無長度限制 public class encrypthelper 解密 public static string decrypt string encryptedinput 生成金鑰 public static void rsakey out string xml...

無限制的自由適應的邊框

前幾天改乙個東東時,看到乙個不錯的效果,可惜它是用js做的,有點複雜和麻煩。今天正好沒什麼事,就整了個用css實現的方法,感覺應該會比較實用的。一路做來都非常順利,順便考慮了下請求的問題,合併了幾張,其實還可以更優化的,不過暫時就這樣,該例僅做說明,實際應用時再update。不過做到最後成型的時候,...