<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 閱讀(14325) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 国产成人免费AV在线播放| 国产精品亚洲色婷婷99久久精品| 精品熟女少妇aⅴ免费久久| 免费jjzz在线播放国产| 精品亚洲视频在线| 四虎免费久久影院| 一级毛片免费不卡| 在线观看国产区亚洲一区成人 | 亚洲爆乳无码精品AAA片蜜桃| 扒开双腿猛进入爽爽免费视频| 国产精品亚洲综合五月天| 无码少妇一区二区浪潮免费| 亚洲欧美日韩中文无线码| 免费观看日本污污ww网站一区| 国产亚洲人成在线影院| 久久亚洲欧洲国产综合| 一区二区免费视频| 亚洲精品福利你懂| 免费少妇a级毛片人成网| 色www永久免费网站| 亚洲最大在线观看| 日本高清免费不卡视频| 中文字幕永久免费视频| 91亚洲自偷手机在线观看| 成人免费777777| fc2免费人成在线| 久久久久亚洲AV无码观看 | 亚洲成?Ⅴ人在线观看无码| yellow免费网站| 日韩亚洲AV无码一区二区不卡 | 亚洲成在人线电影天堂色| 国产免费观看a大片的网站| a毛片免费观看完整| 亚洲另类精品xxxx人妖| 免费久久精品国产片香蕉| 无码国产精品一区二区免费vr | 亚洲人精品午夜射精日韩| 97免费人妻无码视频| 黄网站色视频免费观看45分钟| 亚洲视频中文字幕| 国产免费黄色大片|