Я не совсем уверен, как сформулировать вопрос, поэтому не стесняйтесь сказать мне, что я совершенно не прав.
Я хочу использовать 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 могут использовать любое соединение, которое они хотят. Мой код правильный / сохранить?