Spring+jta+Hibernate的跨库处理的配置
配置文件如下:(对应的表的引擎要是INNODB的才可以)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
??? ???? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? ???? xmlns:aop="http://www.springframework.org/schema/aop"
??? ???? xmlns:tx="http://www.springframework.org/schema/tx"
??? ???? xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
?????????? http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
?????????? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
???
??? <!-- 数据源1 -->
??? <bean id="dataSource1" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">
??? <property name="uniqueResourceName">??
??????????? <value>mysql/main</value>??
??????? </property>??
??????? <property name="xaDataSourceClassName">??
??????????? <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->??
??????????? <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
??????? </property>??
??????? <property name="xaDataSourceProperties">??
??????????? <value>URL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8;user=root;password=123456</value>??
??????? </property>?
???????? <property name="validatingQuery">
??????????? <value>SELECT 1</value>??
??????? </property>
??? </bean>
??? <!-- 数据源2 -->
??? <bean id="dataSource2" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">??
??????? <property name="uniqueResourceName">??
??????????? <value>mysql/secondary</value>??
??????? </property>??
??????? <property name="xaDataSourceClassName">??
??????????? <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->??
??????????? <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>??
??????? </property>
??????? <property name="xaDataSourceProperties">??
??????????? <value>URL=jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8;user=root;password=123456</value>??
??????? </property>
???????? <property name="validatingQuery">
??????????? <value>SELECT 1</value>??
??????? </property>
??? </bean>
???
??? <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
??????? <property name="forceShutdown" value="true"/>
??? </bean>
?
??? <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
??????? <property name="transactionTimeout" value="300"/>
??? </bean>
???
??? <!-- JTA事务管理器 -->
??? <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
?????? <property name="transactionManager" ref="atomikosTransactionManager"/>
?????? <property name="userTransaction" ref="atomikosUserTransaction"/>
??? </bean>
???
??? <!-- 第一个sessionFactory,有多少个数据库就要有多少个数据源,也就要有多少个sessionFactory,每个sessionFactory对应一个数据源 -->
??? <bean id="sessionFactory1" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
?????? <property name="dataSource" ref="dataSource1"/>
?????? <property name="annotatedClasses">
?????????? <list>
????????????? <value>org.zsl.jta.model.User</value>
?????????? </list>
?????? </property>
?????? <property name="hibernateProperties">
?????????? <props>
????????????? <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
????????????? <prop key="hibernate.show_sql">true</prop>
????????????? <prop key="hibernate.hbm2ddl.auto">update</prop>
????????????? <!--
????????????? <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
????????????? <prop key="hibernate.cache.use_query_cache">true</prop>
????????????? ?-->
?????????? </props>
?????? </property>
??? </bean>??