2010-02-12 7 views
6

Pour autant que je sache, DataSourceTransactionManager lie une connexion JDBC de la source de données spécifiée au thread en cours, en autorisant une connexion par thread liée à DataSource. Si c'est un pool de connexions, il faudra une des connexions disponibles. Après cela, si j'utilise JdbcTemplate dans une transaction, il va capturer une connexion liée par DataSourceTransactionManager. Est-ce que je comprends le mécanisme correctement? Y at-il des exigences pour la définition du bean du gestionnaire de transactions (c'est-à-dire singleton)?Comment exactement JdbcTemplate avec TransactionManager fonctionne-t-il ensemble?

Répondre

3

Vous avez à peu près décrit comment cela fonctionne. La logique de synchronisation des transactions de Spring a la responsabilité plutôt redoutable de garder les transactions synchronisées entre JDBC, Hibernate, JPA, etc., et le résultat final est plutôt transparent.

Les gestionnaires de transactions doivent être singletons, oui. Chaque transaction est gérée par un seul gestionnaire de transactions, et si vous en avez plusieurs, vous êtes dans un monde de souffrance.

+0

Merci pour la réponse! –

+1

Quelle est la durée de vie de la connexion acquise à partir de DataSource? –

0

La valeur par défaut est 15 secondes pour la durée de vie de la connexion acquise à partir de DataSource. Et vous pouvez spécifier explicitement le délai maximal de connexion dans votre connexion.

Questions connexes