Spring事务管理器是否将连接绑定到线程



我发现了以下线程:JdbcTemplate和TransactionManager究竟是如何协同工作的?

第一句话:

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

这正是我想知道的。

当使用事务管理器时,是否每个线程都有自己的单个连接?此外,这种连接能持续多久?同一个线程在一个请求中使用相同的连接,还是发生了其他事情?我只是想了解当你有一个事务管理器和没有事务管理器时,Spring到底在做什么(不管你是否真的有事务)。

当使用事务管理器时,是否每个线程都有自己的单个连接?此外,这种连接能持续多久?

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

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

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

不管你是否真的有交易

无论是否显式执行,您总是有一个事务。如果您没有显式配置一个,那么JDBC驱动程序和数据库将在执行单个操作所需的时间内启动和完成一个。Spring的事务管理(或任何其他框架的事务管理)允许您跨多个操作延长事务的生存期。这样做需要在事务期间独占使用连接。

相关内容

  • 没有找到相关文章

最新更新