隨筆-348  評(píng)論-598  文章-0  trackbacks-0
               <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                    
          <property name="sessionFactory">
                         
          <ref local="sessionFactory" />
                    
          </property>
               
          </bean>
                   
              
          <bean id="ordersDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
                   
          <property name="transactionManager">
                        
          <ref bean="transactionManager" />
                   
          </property>
                   
          <property name="target">
                        
          <ref local="ordersDAO" />
                   
          </property>
                   
          <property name="transactionAttributes">
                        
          <props>
                             
          <prop key="insert*">PROPAGATION_REQUIRED</prop>
                             
          <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                             
          <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
                        
          </props>
                   
          </property>
              
          </bean>
              
              
          <bean id="ordersDAO" class="com.gcoresoft.hibernate.OrdersDAO">
                  
          <property name="sessionFactory">
                      
          <ref local="sessionFactory" />
                  
          </property>
              
          </bean>

              
          <bean name="/addOrder" class="com.gcoresoft.struts.action.OrderAction" singleton="false">
                   
          <property name="ordersDAO">
                        
          <ref local="ordersDAOProxy" />
                   
          </property>
              
          </bean>
          這個(gè)是傳統(tǒng)的事務(wù)代理方式,下面的是目前開發(fā)中一種常用的事務(wù)代理方式(感謝Amigo姐姐)
           <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                
          <property name="sessionFactory">
                 
          <ref local="sessionFactory" />
                
          </property>
               
          </bean>

              
          <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
                  
          <!--  事務(wù)攔截器bean需要依賴注入一個(gè)事務(wù)管理器 -->
                  
          <property name="transactionManager" ref="transactionManager" />
                  
          <property name="transactionAttributes">
                      
          <!--  下面定義事務(wù)傳播屬性-->
                      
          <props>
                          
          <prop key="insert*">PROPAGATION_REQUIRED</prop>
                             
          <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                             
          <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
                      
          </props>
                  
          </property>
              
          </bean>

              
          <!-- 定義BeanNameAutoProxyCreator-->
              
          <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
                  
          <!--  指定對(duì)滿足哪些bean name的bean自動(dòng)生成業(yè)務(wù)代理 -->
                  
          <property name="beanNames">
                      
          <!--  下面是所有需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
                      
          <list>
                          
          <value>ordersDAO</value>
                      
          </list>
                      
          <!--  此處可增加其他需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
                  
          </property>
                  
          <!--  下面定義BeanNameAutoProxyCreator所需的事務(wù)攔截器-->
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <!-- 此處可增加其他新的Interceptor -->
                          
          <value>transactionInterceptor</value>
                      
          </list>
                  
          </property>
              
          </bean>

              
          <bean name="/addOrder" class="com.gcoresoft.struts.action.OrderAction" singleton="false">
               
          <property name="ordersDAO">
                
          <ref bean="ordersDAO" />
               
          </property>
              
          </bean>
          不過,如果想使用代理,OrderDAO就必須是一個(gè)接口的實(shí)現(xiàn),public class OrdersDAO extends HibernateDaoSupport implements IOrdersDAO ,然后在相應(yīng)的OrderAction里面
              private IOrdersDAO ordersDAO;
              
              
          /**
               * 
          @param ordersDAO
               
          */

              
          public void setOrdersDAO(IOrdersDAO ordersDAO)
              
          {
                  
          this.ordersDAO=ordersDAO;
              }
          這樣才能使用事務(wù)代理,而不能直接將OrdersDAO作為傳遞參數(shù)的類型,因?yàn)槟菢映绦驎?huì)報(bào)錯(cuò)
          Error creating bean with name '/addOrder' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is PropertyAccessExceptionsException (1 errors)。

          P.S:MyEclipse里面可以使用Hibernate Reverse Engineering來生成DAO,然后用Eclipse的Refactor來Extract Interface,這樣就方便多了。呵呵!

          ---------------------------------------------------------
          專注移動(dòng)開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2007-05-10 22:27 TiGERTiAN 閱讀(667) 評(píng)論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 平塘县| 阳信县| 丰镇市| 岚皋县| 探索| 瓦房店市| 托里县| 泌阳县| 历史| 宁武县| 永清县| 宁安市| 吴江市| 钦州市| 河南省| 垦利县| 宜黄县| 通化市| 莫力| 武山县| 和田市| 青神县| 宿迁市| 广宗县| 塘沽区| 乐昌市| 井冈山市| 文安县| 蒙山县| 石景山区| 务川| 江西省| 浪卡子县| 宣恩县| 康保县| 南阳市| 资阳市| 施甸县| 平泉县| 阳原县| 北票市|