<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




    主站蜘蛛池模板: 亚洲欧洲日产韩国在线| 全黄大全大色全免费大片| 亚洲AV天天做在线观看| 成年性午夜免费视频网站不卡| 二区久久国产乱子伦免费精品| 亚洲精品无码av片| 中文字幕亚洲综合精品一区| 国产亚洲精品免费视频播放| 四虎影院永久免费观看| 免费电视剧在线观看| 在线亚洲精品自拍| 国产国产成年年人免费看片| 暖暖免费中文在线日本| 亚洲 欧洲 视频 伦小说| 亚洲欧洲春色校园另类小说| 亚洲av永久无码精品表情包| 国产成人精品曰本亚洲79ren| 国产精品免费视频网站| 国产精品二区三区免费播放心| 黄色成人网站免费无码av| 91久久成人免费| 亚洲网站在线免费观看| 99久久久国产精品免费牛牛| 久久青草精品38国产免费| 久久精品亚洲AV久久久无码 | 亚洲另类自拍丝袜第五页| 亚洲人成电影在在线观看网色| 性短视频在线观看免费不卡流畅| 国产亚洲视频在线播放大全| 亚洲国产AV一区二区三区四区| 亚洲综合一区二区三区四区五区| 亚洲人成网站在线观看青青| 亚洲国产精品视频| 国产精品亚洲综合专区片高清久久久 | 免费电影在线观看网站| 毛片免费视频播放| 午夜毛片不卡高清免费| 日本久久久免费高清| 少妇太爽了在线观看免费视频| 日本在线免费播放| 91香蕉国产线在线观看免费 |