<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-13  評論-9  文章-9  trackbacks-0
    統觀spring事務,圍繞著兩個核心PlatformTransactionManager和TransactionStatus

    spring提供了幾個關于事務處理的類:?
    TransactionDefinition?//事務屬性定義
    TranscationStatus?//代表了當前的事務,可以提交,回滾。
    PlatformTransactionManager這個是spring提供的用于管理事務的基礎接口,其下有一個實現的抽象類AbstractPlatformTransactionManager,我們使用的事務管理類例如DataSourceTransactionManager等都是這個類的子類。

    一般事務定義步驟:
    TransactionDefinition td = new TransactionDefinition();
    TransactionStatus ts = transactionManager.getTransaction(td);
    try
    { //do sth
    ? transactionManager.commit(ts);
    }
    catch(Exception e){transactionManager.rollback(ts);}
    ?

    spring提供的事務管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復的代碼比較多;聲明式的比編程式的更靈活。

    編程式主要使用transactionTemplate。省略了部分的提交,回滾,一系列的事務對象定義,需注入事務管理對象.
    void add()
    {
    ??? transactionTemplate.execute( new TransactionCallback(){
    ??????? pulic Object doInTransaction(TransactionStatus ts)
    ?????? { //do sth}
    ??? }
    }

    聲明式:
    使用TransactionProxyFactoryBean:
    <bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    ??<property name="transactionManager"><ref bean="transactionManager"/></property>
    ??<property name="target"><ref local="userManagerTarget"/></property>
    ??<property name="transactionAttributes">
    ???<props>
    ????<prop key="insert*">PROPAGATION_REQUIRED</prop>
    ????<prop key="update*">PROPAGATION_REQUIRED</prop>
    ????<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    ???</props>
    ??</property>
    ?</bean>

    圍繞Poxy的動態代理 能夠自動的提交和回滾事務
    org.springframework.transaction.interceptor.TransactionProxyFactoryBean
    • PROPAGATION_REQUIRED--支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
    • PROPAGATION_SUPPORTS--支持當前事務,如果當前沒有事務,就以非事務方式執行。
    • PROPAGATION_MANDATORY--支持當前事務,如果當前沒有事務,就拋出異常。
    • PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
    • PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
    • PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則拋出異常。
    • PROPAGATION_NESTED--如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則進行與PROPAGATION_REQUIRED類似的操作。
    posted on 2006-06-23 15:35 Dragonofson 閱讀(14324) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 国产精品免费视频播放器| 亚洲av丰满熟妇在线播放| 亚洲成_人网站图片| 久久亚洲中文字幕无码| 免费无码又爽又刺激聊天APP| 亚洲综合久久成人69| 亚欧在线精品免费观看一区| 亚洲精品韩国美女在线| 91免费播放人人爽人人快乐| 亚洲欧洲自拍拍偷综合| 免费观看国产网址你懂的| 亚洲另类精品xxxx人妖| h片在线观看免费| 91麻豆最新在线人成免费观看| 亚洲人成片在线观看| 特级做A爰片毛片免费69| 亚洲乱色熟女一区二区三区蜜臀| 免费黄网在线观看| 亚洲国产精品无码久久久不卡| 韩日电影在线播放免费版| 成人免费a级毛片无码网站入口| www亚洲精品少妇裸乳一区二区| 亚洲成色999久久网站| 国产成人免费在线| 中文字幕 亚洲 有码 在线| 国产在线不卡免费播放| 中文字幕免费视频精品一| 免费观看的av毛片的网站| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 亚洲国产天堂久久综合网站| 91av免费观看| 亚洲熟女少妇一区二区| 免费播放一区二区三区| 亚洲精品无码你懂的| 亚洲午夜成人精品电影在线观看| 成人久久免费网站| 亚洲永久无码3D动漫一区| 亚洲成人免费网站| 精品国产_亚洲人成在线| 亚洲精品无码MV在线观看| 亚洲AV无码成人精品区日韩|