先貼2個小例子!html
applicationContext-a.xmlspring
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>OracleDataSource</value> </property> </bean> <!-- <bean id="jndiDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>url地址</value> </property> <property name="username"> <value>用戶</value> </property> <property name="password"> <value>密碼</value> </property> </bean> --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="jndiDataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect </prop> <prop key="hibernate.show_sql"> false </prop> <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop> </props> </property> <property name="mappingResources"> <list> <value>cn/ccb/faengine/mapxml/ParamEssentials.hbm.xml</value> <value>cn/ccb/faengine/mapxml/AccountCalEssentials.hbm.xml</value> </list> </property> </bean> <bean id="commonJdbcDAO" class="cn.ccb.faengine.common.dao.jdbc.impl.CommonJdbcDAO"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate" /> </property> </bean> <bean id="commonHibernateDAO" class="cn.ccb.faengine.common.dao.hibernate.impl.CommonHibernateDAO"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="jndiDataSource" /> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributeSource"> <ref bean="reqNamingTransactionAttribute" /> </property> </bean> <bean id="reqNamingTransactionAttribute" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <property name="properties"> <props> <prop key="*"> PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception </prop> </props> </property> </bean> <!-- jta事務攔截--> <bean id="jtaReqBaseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="jtaTransactionManager"/> <property name="transactionAttributeSource"> <ref bean="reqNamingTransactionAttribute" /> </property> </bean> <!-- jta事務管理--> <bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> </bean> <!-- jta事務攔截--> <bean id="jtaBaseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="jtaTransactionManager"/> <property name="transactionAttributeSource"> <ref bean="reqNamingTransactionAttribute" /> </property> </bean> </beans>
applicationContext-b.xmlsql
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-
- <beans>
-
- <bean id="requestUCC" parent="baseTransactionProxy">
- <property name="target" ref="TargetRequestUCC" />
- </bean>
-
- <bean id="TargetRequestUCC"
- class="cn.ccb.faengine.sysmanage.request.ucc.impl.RequestUCCImpl">
- <property name="hibernateDAO">
- <ref bean="commonHibernateDAO" />
- </property>
- </bean>
-
- <!-- 增長UCC and BS 20100420 linwei begin -->
-
- <bean id="modelMappingUCC" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="proxyInterfaces">
- <list>
- <value>cn.ccb.faengine.foundation.model.commoncorporation.helper.ucc.IModelMappingUCC</value>
- </list>
- </property>
- <property name="target">
- <ref bean="modelMappingUCCTarget"/>
- </property>
- <property name="transactionManager">
- <ref bean="transactionManager"/>
- </property>
- <property name="transactionAttributeSource">
- <ref bean="reqNamingTransactionAttribute"/>
- </property>
- </bean>
-
- <bean id="modelMappingUCCTarget" class="cn.ccb.faengine.foundation.model.commoncorporation.helper.ucc.impl.ModelMappingUCCImpl">
- <property name="modelMappingBS">
- <ref bean="modelMappingBS"/>
- </property>
- </bean>
-
- <bean id="modelMappingBS" class="cn.ccb.faengine.foundation.model.commoncorporation.helper.bizservice.impl.ModelMappingBSImpl">
- <property name="hibernateDAO">
- <ref bean="commonHibernateDAO"/>
- </property>
- </bean>
-
- <!-- 增長UCC and BS 20100420 linwei end -->
-
-
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="requestUCC" parent="baseTransactionProxy"> <property name="target" ref="TargetRequestUCC" /> </bean> <bean id="TargetRequestUCC" class="cn.ccb.faengine.sysmanage.request.ucc.impl.RequestUCCImpl"> <property name="hibernateDAO"> <ref bean="commonHibernateDAO" /> </property> </bean> <!-- 增長UCC and BS 20100420 linwei begin --> <bean id="modelMappingUCC" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="proxyInterfaces"> <list> <value>cn.ccb.faengine.foundation.model.commoncorporation.helper.ucc.IModelMappingUCC</value> </list> </property> <property name="target"> <ref bean="modelMappingUCCTarget"/> </property> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributeSource"> <ref bean="reqNamingTransactionAttribute"/> </property> </bean> <bean id="modelMappingUCCTarget" class="cn.ccb.faengine.foundation.model.commoncorporation.helper.ucc.impl.ModelMappingUCCImpl"> <property name="modelMappingBS"> <ref bean="modelMappingBS"/> </property> </bean> <bean id="modelMappingBS" class="cn.ccb.faengine.foundation.model.commoncorporation.helper.bizservice.impl.ModelMappingBSImpl"> <property name="hibernateDAO"> <ref bean="commonHibernateDAO"/> </property> </bean> <!-- 增長UCC and BS 20100420 linwei end --> </beans>
說明:session
第一種聲明事務實現方式:oracle
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributeSource">
<ref bean="reqNamingTransactionAttribute"/>
</property>app
須要代理的事務中,經過這兩個屬性進行了事務管理。url
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>spa
<bean id="reqNamingTransactionAttribute"
class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
<property name="properties">
<props>
<prop key="*">
PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception
</prop>
</props>
</property>
</bean>.net
有這2個Bean,能夠進行事務上的管理控制了!hibernate
第二種聲明事務實現方式:
<bean id="requestUCC" parent="baseTransactionProxy">
<property name="target" ref="TargetRequestUCC" />
</bean>
<bean id="TargetRequestUCC"
class="cn.ccb.faengine.sysmanage.request.ucc.impl.RequestUCCImpl">
<property name="hibernateDAO">
<ref bean="commonHibernateDAO" />
</property>
</bean>
這種方式繼承了 父類 parent="baseTransactionProxy" 這個Bean的事務管理方式
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributeSource"> <ref bean="reqNamingTransactionAttribute" /> </property> </bean>