0

谁能告诉我们在未注释为 @Transactional 但事务管理器是注释驱动的方法中对数据库表所做的更改会发生什么?

我们假设这取决于自动提交的真假。如果自动提交为真,是否会在方法完成后立即提交数据更改?

感谢您提前提供任何帮助。

4

1 回答 1

0

这实际上取决于调用堆栈以及您在该方法中所做的事情。如果您使用JdbcTemplateor之类的东西DataSourceUtils,则未注释的方法可能会重用在调用堆栈层次结构中启动较高的事务的上下文。同样,如果您的方法尝试直接在 non-managed 上查找连接DataSource,即使是标有注释的方法也不会给您预期的结果。

假设您的方法没有尝试直接访问某些资源,那么您的非注释方法可能是事务性的,也可能不是事务性的,具体取决于它的调用堆栈,除非您知道在哪个上下文中调用此方法,否则您可能希望避免这种情况。

在侧节点上,有多种方法可以确保事务上下文在进入带注释的方法之前处于正确的阶段,有关更多详细信息,请参阅Propagation 的 javadoc

于 2014-03-14T08:37:48.200 回答