春季交易中的一个连接?

我几乎没有关于连接和弹簧交易的问题.

>当执行DML和DML的多个方法时,spring是否使用相同的连接实例? DDL操作是在事务中执行的(传播级别是否必需)?我已经读过它确实保持了相同的连接,但不知道为什么以及如何在技术上做到这一点?在解释如何提供spring源代码中的任何提示时,它会有所帮助.
>如果我使用Serializable作为隔离级别,那么使用Spring声明式事务,是否会确保在该方法或从原始事务方法调用的任何其他方法中执行数据库操作时始终使用一个连接?

考虑到这个话题,在使用Spring Transactions时我应该记住哪些要点?

任何关于这个主题的想法/帮助将不胜感激.谢谢.

更新1 – 对不起,我写了可序列化的传播级别而不是隔离级别.纠正了它.

最佳答案
> Spring事务管理只是不同事务资源的统一接口,例如JDBC连接.因为对于大多数事务资源而言,拥有跨多个连接的事务是没有意义的,所以这些资源的Spring管理事务中的所有操作都在同一连接中执行.当然,如果您对JtaTransactionManager使用分布式事务,则涉及分布式事务的每个事务资源都将拥有自己的连接.
>事务隔离级别与Spring事务管理无关. Their meaning is defined in the database theory.此外,它们与交易传播无关.

Spring通过使用TransactionSynchronizationManager将连接(例如JDBC Connections)作为线程本地状态的一部分来实现此行为.例如,见DataSourceUtils.

转载注明原文:春季交易中的一个连接? - 代码日志