Spring事务管理器是否绑定了与线程的连接?

dnc*_*253 9 spring transactionmanager spring-transactions

我找到了以下主题:JdbcTemplate与TransactionManager如何一起工作?

第一句话:

据我所知,DataSourceTransactionManager将JDBC连接从指定的DataSource绑定到当前线程,允许每个DataSource一个线程绑定连接.如果它是一个连接池,它将采用一个可用的连接.

......正是我想知道的.

使用事务管理器时,您最终是否拥有自己的单个连接的每个线程?此外,该连接存在多长时间?同一个线程是否在单个请求中使用相同的连接,或者还有其他事情在进行?我只是想了解一下当你有一个事务管理器时Spring正在做什么,而当你没有事务管理器时(无论你是否真的有一个事务).

ska*_*man 13

使用事务管理器时,您最终是否拥有自己的单个连接的每个线程?此外,该连接存在多长时间?

连接通常从连接池获得.当事务管理器启动事务时,从池中借用连接,然后在事务完成时返回池.在此期间,连接绑定到线程.

同一个线程是否在单个请求中使用相同的连接

它在事务持续期间使用相同的连接.请求本身无关紧要.

无论你是否真的有交易

无论您是否明确地进行交易,您始终都有交易.如果您没有显式配置,那么只要执行单个操作,JDBC驱动程序和数据库就会启动并完成一个.Spring的事务管理(或任何其他框架的事务管理)允许您跨多个操作延长该事务的生命周期.这样做需要在交易期间独占使用连接.