Как именно JdbcTemplate с TransactionManager работает вместе? - PullRequest
6 голосов
/ 12 февраля 2010

Насколько я понял, DataSourceTransactionManager связывает JDBC-соединение из указанного DataSource с текущим потоком, обеспечивая по одному привязанному к потоку Connection для каждого DataSource. Если это пул соединений, потребуется одно из доступных соединений.

После этого, если я использую JdbcTemplate внутри транзакции, он будет перехватывать соединение, связанное с DataSourceTransactionManager. Я правильно понимаю механизм? Есть ли какие-либо требования для определения бина менеджера транзакций (т. Е. Синглтона)?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Вы в значительной степени описали, как это работает. Логика синхронизации транзакций Spring несет довольно грозную ответственность за синхронизацию транзакций между JDBC, Hibernate, JPA и т. Д., И конечный результат довольно плавный.

Менеджеры транзакций должны быть одиночными, да. Любая транзакция управляется только одним менеджером транзакций, и если у вас несколько таких транзакций, вам будет больно.

0 голосов
/ 13 декабря 2017

Значение по умолчанию составляет 15 секунд для времени жизни соединения, полученного из источника данных. И вы можете указать максимальное время ожидания соединения явно в вашем соединении.

...