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

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

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

    posts - 36, comments - 30, trackbacks - 0, articles - 3

    Struts,Spring,Hibernate Web應用開發3

    Posted on 2008-01-02 10:11 笑看人生 閱讀(469) 評論(0)  編輯  收藏 所屬分類: Web開發技術
    在二的基礎上,我們再給這個簡單web應用增加聲明式事務,聲明式事務原來是EJB所引以為自豪的地方,現如今Spring框架的AOP也支持這功能,關于AOP的內容,這兒不想太深入,有興趣的讀者,可以參見本blog上有關Spring AOP方面的介紹,為了增加聲明式事務,我們只需修改Spring的配置文件applicationContext.xml,

    1.首先我們在配置文件中增加事務管理器,由于本應用采用了Hibernate,所以我們采用HibernateTransactionManager,配置如下:

    1<bean  id="transactionManager" 
    2class="org.springframework.orm.hibernate.HibernateTransactionManager">
    3    <property name="sessionFactory">
    4      <ref local="sessionFactory"/>
    5    </property>
    6 </bean>

    2.要在Sping使用聲明式事務,我們得用TransactionProxyFactoryBean,它的作用就是把方法包裹在事務中,配置如下:

     1<bean id="bookService" 
     2class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     3    <property name="transactionManager">
     4      <ref local="transactionManager"/>
     5    </property>
     6    <property name="target">
     7      <ref local=" registerTarget"/>
     8    </property>
     9    <property name="transactionAttributes">
    10      <props>
    11    <prop key="save*">
    12PROPAGATION_REQUIRED,-OrderException 
    13</prop>
    14      </props>
    15    </property>
    16 </bean>
    17

    下面我們簡單解釋一下上面配置的意思:transactionManager屬性引用一個事務管理器,在這里我們引用HibernateTransactionManager,target屬性指定被代理的對象,transactionAttributes屬性的save*表示在代理對象中所有以save開頭的方法,PROPAGATION_REQUIRED表示代理對象中所有以save開頭的方法都必須在事務中運行,-OrderException表示在執行以save開頭的方法時,如果有OrderException異常拋出,則事務立即回滾。

    完整的applicationContext.xml的配置如下:

     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
     3 
     4<beans>    
     5 
     6    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     7       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     8       <property name="url" value="jdbc:mysql://localhost/register"/>
     9       <property name="username" value="root"/>
    10       <property name="password" value="root"/>
    11    </bean>    
    12 
    13    <!-- Hibernate SessionFactory -->
    14    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    15       <property name="dataSource" ref="dataSource"/>
    16       <property name="mappingDirectoryLocations">
    17           <value>classpath:test\register\entity\</value>
    18       </property>
    19       <property name="hibernateProperties">
    20           <props>
    21              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    22              <prop key="hibernate.show_sql">true</prop>
    23              <prop key="hibernate.generate_statistics">true</prop>
    24           </props>
    25       </property>       
    26    </bean>    
    27    
    28    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    29    <property name="sessionFactory">
    30      <ref local="sessionFactory"/>
    31    </property>
    32 </bean>
    33 
    34   <bean id="registerService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    35    <property name="transactionManager">
    36      <ref local="transactionManager"/>
    37    </property>
    38    <property name="target">
    39      <ref local=" registerTarget"/>
    40    </property>
    41    <property name="transactionAttributes">
    42      <props>        
    43        <prop key="save*">PROPAGATION_REQUIRED,-OrderException</prop>
    44      </props>
    45    </property>
    46 </bean>
    47 
    48   <bean id="registerDAO" class="test.register.dao.RegisterDAO">
    49        <property name="sessionFactory" ref="sessionFactory"/>       
    50 </bean>
    51 
    52   <bean id="registerTarget" class="test.register.service.RegisterService">
    53        <property name="registerDAO" ref="registerDAO"/>      
    54 </bean> 
    55 
    56</beans>
    57

    3.同時還要修改action-servlets.xml文件

    1<?xml version="1.0" encoding="UTF-8"?>
    2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    3<beans>    
    4    <bean name="/register" 
    5class="test.register.action.RegisterAction">
    6       <property name="registerService" ref="registerTarget"/>     
    7    </bean>     
    8</beans>
    9




    主站蜘蛛池模板: 国产免费一级高清淫曰本片| 亚洲精品在线不卡| 免费视频爱爱太爽了| 国产成人精品免费视频动漫| 国产乱子伦精品免费女| 亚洲精品国产精品乱码不卡√ | 国产亚洲精品美女久久久久| 免费不卡视频一卡二卡| 亚洲午夜久久久久久尤物| 成人免费激情视频| 亚洲午夜在线播放| 国产一区二区三区在线观看免费 | 亚洲精品午夜国产VA久久成人| 亚洲国产成人va在线观看网址| 一个人免费观看视频在线中文 | 国产成人高清精品免费鸭子 | 久久亚洲AV成人无码国产电影| 桃子视频在线观看高清免费视频| 四虎成人精品在永久免费| 免费在线观看亚洲| 亚洲熟女少妇一区二区| 日韩精品无码专区免费播放| 亚洲国产成人超福利久久精品| a级毛片免费高清毛片视频| 亚洲黄色在线电影| 午夜小视频免费观看| 一级黄色免费网站| 久久精品国产亚洲av日韩| 中文字幕无码日韩专区免费 | 亚洲视频在线免费观看| 日韩免费精品视频| 18gay台湾男同亚洲男同| 成人激情免费视频| 亚洲小说图区综合在线| 亚洲日本一区二区一本一道 | 亚洲国产区男人本色| 亚洲中文字幕第一页在线| 18禁免费无码无遮挡不卡网站 | 国产成人精品久久免费动漫| 国产精品观看在线亚洲人成网| 在线jyzzjyzz免费视频|