spring3 transaction
程序员文章站
2022-05-25 10:30:50
...
1. JBOSS中数据源的配置(mysql-xa-ds.xml支持分布式的事务),如下:
2. Spring application-Context.xml配置,如下:
3. Service的注解,如下:
<datasources>
<xa-datasource>
<jndi-name>test1</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<xa-datasource-property name="Url">jdbc:mysql://10.0.0.107:3306/test1?useUnicode=true&characterEncoding=UTF-8</xa-datasource-property>
<xa-datasource-property name="User">root</xa-datasource-property>
<xa-datasource-property name="Password">root</xa-datasource-property>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
<xa-datasource>
<jndi-name>test2</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<xa-datasource-property name="Url">jdbc:mysql://10.0.0.106:3306/test?useUnicode=true&characterEncoding=UTF-8</xa-datasource-property>
<xa-datasource-property name="User">root</xa-datasource-property>
<xa-datasource-property name="Password">root</xa-datasource-property>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
</datasources>
2. Spring application-Context.xml配置,如下:
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
<context:component-scan base-package="com.youyu" />
<jee:jndi-lookup id="dataSource_first" jndi-name="java:test1" />
<jee:jndi-lookup id="dataSource_second" jndi-name="java:test2" />
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransactionName">
<value>java:comp/UserTransaction</value>
</property>
</bean>
<bean id="sqlSessionFactory_first" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource_first" />
<property name="configLocation" value="classpath:batisConfig_first.xml" />
</bean>
<bean id="sqlSessionFactory_second" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource_second" />
<property name="configLocation" value="classpath:batisConfig_second.xml" />
</bean>
<bean id="mapperScannerConfigure_first" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.youyu.access" />
<property name="sqlSessionFactory" ref="sqlSessionFactory_first" />
</bean>
<bean id="mapperScannerConfigure_second" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.youyu.accesstwo" />
<property name="sqlSessionFactory" ref="sqlSessionFactory_second" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
3. Service的注解,如下:
public interface AccountService {
@Transactional(readOnly=false,propagation=Propagation.REQUIRED)
public abstract int signUp(String name, String email);
}
推荐阅读
-
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
-
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
-
spring @Transaction事务回滚失败
-
java当中JDBC当中的transaction例子
-
mysql报错:Deadlock found when trying to get lock; try restarting transaction的解决方法
-
解决Django transaction进行事务管理踩过的坑
-
Codeigniter框架的更新事务(transaction)BUG及解决方法
-
php中在PDO中使用事务(Transaction)
-
mysql中TCL(事务控制语言)TRANSACTION
-
MySQL案例03:Cause: java.sql.SQLException: Could not retrieve transaction read-only