| | |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ConcurrentMap; |
| | | |
| | | /** |
| | | * 多数据源的事务类,事务对象由事务工厂创建,完成数据库事务操作。 |
| | | * 事务对象包裹着: |
| | | * 数据库连接、事务提交、事务回滚等对象及操作 |
| | | * 在事务对象中具体决定采用的具体数据源 |
| | | */ |
| | | public class MultiDataSourceTransaction implements Transaction { |
| | | |
| | | private final DataSource multidataSource; |
| | |
| | | private boolean autoCommit; |
| | | |
| | | |
| | | public MultiDataSourceTransaction(DataSource dataSource) { |
| | | public MultiDataSourceTransaction(DataSource dataSource, boolean autoCommit) { |
| | | //dataSource是DynamicDataSource类的实例 |
| | | this.multidataSource = dataSource; |
| | | this.autoCommit = autoCommit; |
| | | curConMap = new ConcurrentHashMap<>(); |
| | | } |
| | | |
| | |
| | | if (!this.curConMap.containsKey(nowDsName)) { |
| | | try { |
| | | Connection conn = this.multidataSource.getConnection(); |
| | | autoCommit=false; |
| | | this.autoCommit = false; |
| | | conn.setAutoCommit(false); |
| | | this.curConMap.put(nowDsName, conn); |
| | | } catch (SQLException ex) { |