I znaleziono wątku: How exactly JdbcTemplate with TransactionManager works together?Czy menedżer transakcji Spring wiąże połączenie z wątkiem?
pierwsze zdanie, że:
Tak dalece, jak rozumiane DataSourceTransactionManager wiąże połączenia JDBC z określonego źródła danych do bieżącego nici, co pozwala na jednej nitki związany Połączenie dla źródła danych. Jeśli jest to pula połączeń, zajmie jedno z dostępnych połączeń.
... jest dokładnie tym, co chcę wiedzieć.
Podczas korzystania z menedżera transakcji kończysz z każdym wątkiem mającym własne pojedyncze połączenie? Jak długo trwa to połączenie? Czy ten sam wątek używa tego samego połączenia podczas jednego żądania lub czy dzieje się coś innego? Próbuję tylko zrozumieć, co dokładnie Spring robi pod spodem, kiedy masz menedżera transakcji, a kiedy go nie masz (niezależnie od tego, czy faktycznie masz transakcję).
Dziękuję za odpowiedź. Pomaga mi to zrozumieć nieco więcej z tego, co się dzieje. Rozumiem, w jaki sposób zarządzanie transakcjami pozwala na przedłużenie transakcji dla wielu operacji. Jednak w moim przypadku mam @Transactional (propagacja = Propagacja.SUPPORTS) na każdej z moich metod DAO, co oznacza, że każde połączenie będzie używać własnej niezależnej transakcji. Gdy menedżer uzyskuje wstępne połączenie z puli, czy wiąże to połączenie z bieżącym wątkiem, a następnie pobiera go z niego do końca istnienia wątku, zamiast wracać do puli, aby uzyskać połączenie? – dnc253
"każde połączenie będzie korzystać z własnej niezależnej transakcji" - nie jest to prawdą. Twoje DAO "odziedziczy" każdą istniejącą transakcję, która jest już związana z wątkiem. nie rozpocznie nowego, chyba że nikt już nie jest związany. – skaffman
Myślę, że sposób, w jaki definiuję "transakcję" nie jest całkowicie poprawny.Sposób, w jaki zrozumiałem transakcję, ma miejsce, gdy masz jedną operację DB (która może mieć dowolną liczbę aktualizacji, wstawień itp.). Wszystko to dzieje się albo nic się nie dzieje. Sposób ustawiania DAO, każda metoda będzie działać na DB niezależnie od innych metod. Jeśli jedna metoda nie powiedzie się, nie wpłynie to na operacje wykonywane innymi metodami przed lub po nieudanym. Czym dokładnie jest "transakcja"? Myślałem, że każda metoda będzie tworzyć nową transakcję, ale tak nie jest? – dnc253