2010-02-12 17 views
6

Per quanto ho capito, DataSourceTransactionManager associa una connessione JDBC dall'origine dati specificata al thread corrente, consentendo una connessione legata a thread per DataSource. Se si tratta di un pool di connessioni, ci vorrà una delle connessioni disponibili.Come funziona esattamente JdbcTemplate con TransactionManager?

Dopo questo se utilizzo JdbcTemplate all'interno di una transazione, acquisirà una connessione vincolata da DataSourceTransactionManager. Ho capito correttamente il meccanismo? Ci sono dei requisiti per la definizione del bean del gestore delle transazioni (ad esempio Singleton)?

risposta

3

Hai praticamente descritto come funziona. La logica di sincronizzazione delle transazioni di Spring ha la responsabilità piuttosto terrificante di mantenere le transazioni sincronizzate tra JDBC, Hibernate, JPA, ecc. E il risultato finale è piuttosto semplice.

gestori di transazioni must essere single, sì. Qualsiasi transazione è gestita da un solo gestore delle transazioni e, se ne hai molti in giro, ti trovi in ​​un mondo di dolore.

+0

Grazie per la risposta! –

+1

Qual è la durata della connessione acquisita da DataSource? –

0

Il valore predefinito è 15 secondi per la durata della connessione acquisita da DataSource. E puoi specificare il timeout massimo della connessione esplicitamente nella tua connessione propery.

Problemi correlati