gpt4 book ai didi

database - JDBCTemplate with TransactionTemplate and Connection Pool,使用哪个数据源

转载 作者:太空狗 更新时间:2023-10-30 01:49:07 31 4
gpt4 key购买 nike

我不太确定如何提出这个问题,所以尽管告诉我我的想法完全错误。

我想使用 JdbcTemplateTransactionTemplate。我首先将我的连接池初始化为数据源,然后创建一个事务管理器作为数据源吗?

        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());

现在多线程访问transactionTemplatejdbc。此代码是否保证在 doInTransaction 中完成的所有操作都对所有 jdbc 调用使用相同的连接?

连接是否以某种方式在内部链接,因为看起来 JdbcTemplate 和 TransactionTemplate 可以使用他们想要的任何连接。我的代码是否正确/保存?

最佳答案

这应该没问题。关键部分是 JdbcTemplateDataSourceTransactionManager 提供了相同的 DataSource 对象,您已经完成了。

Does this code guarantee that everything done in doInTransaction uses the same connection for all jdbc calls? Is the connection somehow linked internally, because it looks as if JdbcTemplate and TransactionTemplate could use what every connection they wanted.

在内部,Spring 使用复杂的事务同步逻辑来确保事务、连接和数据源都正确同步(如果您有兴趣,请查看 TransactionSynchronizationManager,但请注意,它是可怕)。

只要您通过 TransactionTemplateJdbcTemplate API 进行操作,它就会正常工作,您无需付出任何努力。但是,如果您自己开始从 DataSource 手动获取连接,那么一切都将失败。

关于database - JDBCTemplate with TransactionTemplate and Connection Pool,使用哪个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220771/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com