Java SpringMVC是否在调用SpringStoredProcedure.execute()后发出提交

Java SpringMVC是否在调用SpringStoredProcedure.execute()后发出提交,java,spring,spring-mvc,model-view-controller,struts,Java,Spring,Spring Mvc,Model View Controller,Struts,Spring是在每次包调用后向数据库发出提交,还是仅在完成所有操作后才提交 我用的是弹簧和支柱。在我的控制器类中,我使用DAO类中的spring存储过程调用许多数据库包。每个调用在DAO类中都有其唯一的方法 我的问题是,Spring是否仅在控制器类发出所有调用且控制器完成后提交,还是在每次执行SpringStoredProcedure后提交 my_package_getusers = SpringStoredProcedure.getStoredProcedureCompiled(getJdbc

Spring是在每次包调用后向数据库发出提交,还是仅在完成所有操作后才提交

我用的是弹簧和支柱。在我的控制器类中,我使用DAO类中的spring存储过程调用许多数据库包。每个调用在DAO类中都有其唯一的方法

我的问题是,Spring是否仅在控制器类发出所有调用且控制器完成后提交,还是在每次执行
SpringStoredProcedure
后提交

my_package_getusers = SpringStoredProcedure.getStoredProcedureCompiled(getJdbcTemplate()
....
my_package_getusers.execute(params).get("result")

SpringJDBC中的Spring实用程序类不进行任何提交。提交事务的责任属于spring tx(事务支持)

这通常是通过在应该在事务作用域中运行的方法上放置
@Transactional
注释来实现的

@Transactional
public void doSomething(SomeClass arg) {...}
输入该方法将创建新的事务,如果事务上下文不存在,则该事务将在离开该事务后提交。但是,如果该方法是从用
@transactional
注释的其他方法调用的,则将使用父事务上下文

或者,您可以使用
org.springframework.transaction.support.TransactionTemplate
来获得对事务的更多控制(例如,从事务上下文启动单独的事务)

例如:

    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
         // do something in trancation)
        }
    });

请注意,在某些数据库(如Oracle)上,您可以在存储过程中提交事务,这将保留在现有事务中所做的所有更改,新事务将随之发生。

此类来自哪个库?