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

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

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

    shenang博客技術(shù)文檔


    理論不懂就實(shí)踐,實(shí)踐不會(huì)就學(xué)理論!

    posts - 35,comments - 55,trackbacks - 0
     

    對(duì)于J2EE 應(yīng)用程序而言,事務(wù)的處理一般有兩種模式:

    1 依賴特定事務(wù)資源的事務(wù)處理

    這是應(yīng)用開(kāi)發(fā)中最常見(jiàn)的模式, 即通過(guò)特定資源提供的事務(wù)機(jī)制進(jìn)行事務(wù)管理。

    如通過(guò)JDBCJTArollbackcommit方法;Hibernate Transaction

    rollbackcommit方法等。這種方法大家已經(jīng)相當(dāng)熟悉。

     2 依賴容器的參數(shù)化事務(wù)管理

    通過(guò)容器提供的集約式參數(shù)化事務(wù)機(jī)制,實(shí)現(xiàn)事務(wù)的外部管理,如EJB中的事

    務(wù)管理模式。

     如,下面的EJB事務(wù)定義中,將 SessionBean MySession doService

    法定義為Required

    也就是說(shuō),當(dāng) MySession.doServer 方法被某個(gè)線程調(diào)用時(shí),容器將此線程

    納入事務(wù)管理容器,方法調(diào)用過(guò)程中如果發(fā)生異常,當(dāng)前事務(wù)將被容器自動(dòng)回

    滾,如果方法正常結(jié)束,則容器將自動(dòng)提交當(dāng)前事務(wù)。

    <container-transaction >

        <method >

           <ejb-name>MySession</ejb-name>

           <method-intf>Remote</method-intf>

           <method-name>doService</method-name>

           <method-params>

              <method-param>java.lang.String</method-param>

           </method-params>

        </method>

        <trans-attribute>Required</trans-attribute>

    </container-transaction>

    容器管理的參數(shù)化事務(wù)為程序開(kāi)發(fā)提供了相當(dāng)?shù)撵`活性,同時(shí)因?yàn)閷⑹聞?wù)委

    托給容器進(jìn)行管理,應(yīng)用邏輯中無(wú)需再編寫事務(wù)代碼,大大節(jié)省了代碼量(特

    別是針對(duì)需要同時(shí)操作多個(gè)事務(wù)資源的應(yīng)用) ,從而提高了生產(chǎn)率。

    然而,使用 EJB 事務(wù)管理的代價(jià)相當(dāng)高昂,撇開(kāi) EJB 容器不菲的價(jià)格,EJB

    的學(xué)習(xí)成本,部署、遷移、維護(hù)難度,以及容器本身帶來(lái)的性能開(kāi)銷(這往往

    意味著需要更高的硬件配置)都給我們帶來(lái)了相當(dāng)?shù)睦Щ蟆4藭r(shí)事務(wù)管理所帶

    來(lái)的優(yōu)勢(shì)往往還不能抵消上面這些負(fù)面影響。

    配置案例:

    <beans>

     <bean id="dataSource"

       class="org.apache.commons.dbcp.BasicDataSource"

       destroy-method="close">

       <property name="driverClassName">

         <value>org.gjt.mm.mysql.Driver</value>

       </property>

       <property name="url">

         <value>jdbc:mysql://localhost/sample</value>

       </property>

       <property name="username">

         <value>user</value>

       </property>

       <property name="password">

         <value>mypass</value>

       </property>

     </bean>

     <bean id="transactionManager"

    class="org.springframework.jdbc.datasource.DataSourceTr

    ansactionManager">

       <property name="dataSource">

         <ref local="dataSource" />

       </property>

     </bean>

     <bean id="userDAO" class="net.xiaxin.dao.UserDAO">

       <property name="dataSource">

         <ref local="dataSource" />

       </property>

     </bean>   SpringFrameWork Developer’s Guide Version 0.6

    October 8, 2004     So many open source projects. Why not Open your Documents?

     <bean id="userDAOProxy"

     class="org.springframework.transaction.interceptor.Tran

    sactionProxyFactoryBean">

       <property name="transactionManager">

         <ref bean="transactionManager" />

       </property>

       <property name="target">

         <ref local="userDAO" />

       </property>

       <property name="transactionAttributes">

         <props>

           <prop key="insert*">PROPAGATION_REQUIRED</prop>

           <prop key="get*">

    PROPAGATION_REQUIRED,readOnly

    </prop>

         </props>

       </property>

     </bean>

    </beans>  

    SpringEJB事務(wù)管理比較

    1 Spring可以將任意Java Class 納入事務(wù)管理

    這里的UserDAO只是我們編寫的一個(gè)普通 Java Class 其中包含了一些

    基本的數(shù)據(jù)應(yīng)用邏輯。通過(guò) Spring,我們即可簡(jiǎn)單的實(shí)現(xiàn)事務(wù)的可配置

    化。也就是說(shuō),我們可以隨意為某個(gè)類的某個(gè)方法指定事務(wù)管理機(jī)制。

    與之對(duì)比,如果使用EJB容器提供的事務(wù)管理功能,我們不得不按照 EJB

    規(guī)范編將UserDAO 進(jìn)行改造,將其轉(zhuǎn)換為一個(gè)標(biāo)準(zhǔn)的 EJB

    2 Spring事務(wù)管理并不依賴特定的事務(wù)資源

    EJB 容器必須依賴于 JTA 提供事務(wù)支持。而 Spring 的事務(wù)管理則支持

    JDBCJTA 等多種事務(wù)資源。這為我們提供了更多的選擇,從而也使得

    我們的系統(tǒng)部署更加靈活。

    posted on 2009-03-24 13:24 重慶理工小子 閱讀(1073) 評(píng)論(0)  編輯  收藏 所屬分類: Spring2
    主站蜘蛛池模板: 看成年女人免费午夜视频| 亚洲中文字幕无码爆乳| 思思久久99热免费精品6| 午夜一级免费视频| 亚洲自偷自偷在线成人网站传媒| 免费不卡在线观看AV| 亚洲成AV人片在线观看无码| A国产一区二区免费入口| 亚洲日韩aⅴ在线视频| a级毛片视频免费观看| 国产亚洲一区二区三区在线观看 | 无码专区—VA亚洲V天堂| 久久国产精品2020免费m3u8| 亚洲AV日韩AV永久无码久久| 99re6热视频精品免费观看| 亚洲国产精品成人久久久| 动漫黄网站免费永久在线观看| 最新亚洲卡一卡二卡三新区| 又粗又大又长又爽免费视频| 一级做a毛片免费视频| 亚洲av无码不卡| 美女裸身网站免费看免费网站| 亚洲精品理论电影在线观看| gogo全球高清大胆亚洲| 成在线人免费无码高潮喷水| 久久精品国产亚洲AV网站| 色影音免费色资源| 精品亚洲国产成人av| 亚洲开心婷婷中文字幕| 99精品视频在线观看免费播放| 亚洲理论片中文字幕电影| 在线观看视频免费国语| 亚洲精品视频免费| 亚洲国产精品成人精品小说| 亚洲精品国产高清不卡在线| 无码囯产精品一区二区免费 | 亚洲AV第一成肉网| 亚洲日韩精品无码专区网址| 2021免费日韩视频网| 一级做a爰片久久毛片免费看| 亚洲成a人不卡在线观看|