Spring、iBatis、MySQL——如何管理事务?

Spring、iBatis、MySQL——如何管理事务?,mysql,spring,ibatis,Mysql,Spring,Ibatis,您好,我正在用SpringiBATIS和mysql构建一个web应用程序 我将使用mysql存储过程,并使用ibatis调用它们。 我的问题是关于如何管理事务。 我应该在存储过程内部管理事务,还是使用spring/ibatis管理事务,还是同时使用两者管理事务?我不知道您为什么要使用存储过程。既然你是,我不知道iBatis给你买了什么 如果我在编写这个应用程序,我要么使用Spring和iBatis,要么使用Spring和存储过程,但不能同时使用两者 我会使用Spring管理事务,确保在存储过程中

您好,我正在用SpringiBATIS和mysql构建一个web应用程序

我将使用mysql存储过程,并使用ibatis调用它们。 我的问题是关于如何管理事务。
我应该在存储过程内部管理事务,还是使用spring/ibatis管理事务,还是同时使用两者管理事务?

我不知道您为什么要使用存储过程。既然你是,我不知道iBatis给你买了什么

如果我在编写这个应用程序,我要么使用Spring和iBatis,要么使用Spring和存储过程,但不能同时使用两者


我会使用Spring管理事务,确保在存储过程中没有事务逻辑。

非常高兴地使用了Ibatis和存储过程,我认为这种方法没有什么不好的地方

Ibatis非常适合于方便地将参数传递到变更数据过程中,以及适当地处理get数据过程的结果集

如果您的进程选择这样做,Ibatis还可以处理多个结果集的输出

在交易方面:视情况而定。如果您的应用程序可以在自动提交模式下正常运行,但您有几个需要事务处理的不同进程,那么proc managed可能适合您。你可以设计你的应用程序,让任何需要交易的东西都由一个“父”进程来协调。并不是说这是一种特别令人钦佩的模式,但它可能会在合理的程度上起作用

如果这听起来不合适,Spring管理的事务无疑是从第一天开始实施的一个好选择,而且这种方法最有可能随着您的应用程序优雅地增长

最后一个想法-注意事务的嵌套,即如果您有app/Spring事务管理,无论您在procs中放置了什么事务处理,直到您从应用程序端提交这些“内部”提交时,这些“内部”提交都没有“正确”提交(它们可以有用途,但这超出了我的讨论范围)

编辑-写了这篇文章之后,我了解到不同的DBs处理提交嵌套的方式不同。Oracle似乎特别将提交视为提交,而不考虑嵌套,因此在其他应用程序管理的事务中提交的过程确实得到了正确的提交