首页 > 代码库 > spring+hibernate+JTA 分布式事务的例子
spring+hibernate+JTA 分布式事务的例子
对于横跨多个Hibernate SessionFacotry的分布式事务,只需简单地将 JtaTransactionManager 同多个 LocalSessionFactoryBean 的定义结合起来作为事务策略。你的每一个DAO通过bean属性得到各自的 SessionFactory 引用。如果所有的底层JDBC数据源都是支持事务的容器,那么只要业务对象使用了 JtaTransactionManager 作为事务策略,它就可以横跨多个DAO和多个session factories来划分事务,而不需要做任何特殊处理。
1 <beans> 2 3 <bean id="myDataSource1" class="org.springframework.jndi.JndiObjectFactoryBean"> 4 <property name="jndiName" value="java:comp/env/jdbc/myds1"/> 5 </bean> 6 7 <bean id="myDataSource2" class="org.springframework.jndi.JndiObjectFactoryBean"> 8 <property name="jndiName" value="java:comp/env/jdbc/myds2"/> 9 </bean>10 11 <bean id="mySessionFactory1" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">12 <property name="dataSource" ref="myDataSource1"/>13 <property name="mappingResources">14 <list>15 <value>product.hbm.xml</value>16 </list>17 </property>18 <property name="hibernateProperties">19 <value>20 hibernate.dialect=org.hibernate.dialect.MySQLDialect21 hibernate.show_sql=true22 </value>23 </property>24 </bean>25 26 <bean id="mySessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">27 <property name="dataSource" ref="myDataSource2"/>28 <property name="mappingResources">29 <list>30 <value>inventory.hbm.xml</value>31 </list>32 </property>33 <property name="hibernateProperties">34 <value>35 hibernate.dialect=org.hibernate.dialect.OracleDialect36 </value>37 </property>38 </bean>39 40 <bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>41 42 <bean id="myProductDao" class="product.ProductDaoImpl">43 <property name="sessionFactory" ref="mySessionFactory1"/>44 </bean>45 46 <bean id="myInventoryDao" class="product.InventoryDaoImpl">47 <property name="sessionFactory" ref="mySessionFactory2"/>48 </bean>49 50 <!-- this shows the Spring 1.x style of declarative transaction configuration -->51 <!-- it is totally supported, 100% legal in Spring 2.x, but see also above for the sleeker, Spring 2.0 style -->52 <bean id="myProductService"53 class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">54 <property name="transactionManager" ref="myTxManager"/>55 <property name="target">56 <bean class="product.ProductServiceImpl">57 <property name="productDao" ref="myProductDao"/>58 <property name="inventoryDao" ref="myInventoryDao"/>59 </bean>60 </property>61 <property name="transactionAttributes">62 <props>63 <prop key="increasePrice*">PROPAGATION_REQUIRED</prop>64 <prop key="someOtherBusinessMethod">PROPAGATION_REQUIRES_NEW</prop>65 <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>66 </props>67 </property>68 </bean>69 70 </beans>
spring+hibernate+JTA 分布式事务的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。