Como exatamente o JDBCTemplate com a TransactionManager trabalha em conjunto?
-
20-09-2019 - |
Pergunta
Até onde eu entendi, o DataSourCetransActionManager vincula uma conexão JDBC da fonte de dados especificada ao thread atual, permitindo uma conexão ligada a um encadeamento por fonte de dados. Se for um pool de conexões, será necessário uma das conexões disponíveis.
Depois disso, se eu usar o JDBCTemplate dentro de uma transação, ele capturará uma conexão BIMED pelo DataSourCetransactionManager. Eu entendo o mecanismo corretamente? Um requisito para fazer a definição de feijão do gerente de transações (ou seja, Singleton)?
Solução
Você praticamente descreveu como funciona. A lógica de sincronização da transação da primavera tem a responsabilidade bastante assustadora de manter as transações sincronizadas em JDBC, Hibernate, JPA, etc., e o resultado final é bastante perfeito.
Gerentes de transação devo Seja singletons, sim. Qualquer transação é gerenciada por apenas um gerente de transações e, se você tem vários deles por aí, está em um mundo de dor.
Outras dicas
O valor padrão é de 15 segundos para a vida útil da conexão adquirida do DataSource. E você pode especificar o tempo limite do máximo de conexão explicitamente em sua propriedade de conexão.