我正在使用 对我的数据库表进行批量更新NamedParameterJdbcTemplate.batchUpdate
,但我想禁用auto-commit
并手动执行提交。
我可以从对象设置自动提交模式,但不知道如何使用对象connection
来做同样的事情。NamedParameterJdbcTemplate
我正在使用 对我的数据库表进行批量更新NamedParameterJdbcTemplate.batchUpdate
,但我想禁用auto-commit
并手动执行提交。
我可以从对象设置自动提交模式,但不知道如何使用对象connection
来做同样的事情。NamedParameterJdbcTemplate
我已经使用TransactionTemplate完成了我的实现
它有一个execute
方法,我在这个函数的回调中执行业务逻辑。
transTemplate.execute( new TransactionCallbackWithoutResult()
{
@Override
protected void doInTransactionWithoutResult( TransactionStatus status)
{
status.setRollbackOnly();
//business logic
}
});
我假设您知道 Spring 中的事务管理,通过定义@Transactional
和传递元数据,Propagation
您Isolation
可以优雅地管理事务。如果不看一下Spring 文档。在大多数情况下,这就是您所需要的。
如果您想自己获得事务管理并对其进行微调(也就是随意执行提交和回滚),您必须直接获取底层TransactionManager。
引用Spring 文档:
使用 PlatformTransactionManager
您也可以org.springframework.transaction.PlatformTransactionManager
直接使用 来管理您的交易。只需通过PlatformTransactionManager
bean 引用将您正在使用的实现传递给您的 bean。然后,使用TransactionDefinition
和TransactionStatus
对象,您可以启动事务、回滚和提交。
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// explicitly setting the transaction name is something that can only be done programmatically
def.setName("SomeTxName");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
// execute your business logic here
}
catch (MyException ex) {
txManager.rollback(status);
throw ex;
}
txManager.commit(status);