我不太确定如何提出这个问题,所以请随时告诉我我的想法完全错误。
我想使用JdbcTemplate
和TransactionTemplate
。我首先将连接池初始化为数据源,并将事务管理器创建为数据源?
BoneCPConfig connectionPoolConfig = new BoneCPConfig();
connectionPoolConfig.setJdbcUrl(...);
connectionPoolConfig.setUsername(...);
connectionPoolConfig.setPassword(...);
connectionPoolConfig.setMinConnectionsPerPartition(...);
connectionPoolConfig.setMaxConnectionsPerPartition(...);
dataSource = new BoneCPDataSource(connectionPoolConfig);
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
但现在我想创建我的 TransactionTemplate 和 JdbcTemplate:
transactionTemplate = new TransactionTemplate(transactionManager);
JdbcTemplate jdbc = new JdbcTemplate(transactionManager.getDataSource());
现在多线程访问transactionTemplate
和jdbc
. 这段代码是否保证doInTransaction
所有的 jdbc 调用都使用相同的连接?
连接是否以某种方式在内部链接,因为看起来 JdbcTemplate 和 TransactionTemplate 可以使用他们想要的任何连接。我的代码是否正确/保存?