我正在使用NamedParameterJdbcTemplate.batchUpdate对我的DB表进行批量更新,但我想禁用auto-commit并手动执行提交。
我可以在connection对象中关闭自动提交模式,但不确定如何使用NamedParameterJdbcTemplate对象执行相同的操作。
发布于 2013-06-05 03:37:00
我已经使用TransactionTemplate完成了我的实现
它有一个execute方法,我在这个函数的回调中执行业务逻辑。
transTemplate.execute( new TransactionCallbackWithoutResult()
{
@Override
protected void doInTransactionWithoutResult( TransactionStatus status)
{
status.setRollbackOnly();
//business logic
}
});发布于 2013-05-31 02:24:11
我假设您知道Spring中的事务管理,在Spring中,通过定义@Transactional并传递Propagation和Isolation的元数据,您可以优雅地管理事务。如果没有,请看一下Spring documentation。在大多数情况下,这就是您所需要的。
如果您想让事务管理掌握在自己的手中并对其进行微调(也称为随意执行提交和回滚),则必须直接获取底层TransactionManager。
引用自Spring docs
使用PlatformTransactionManager
您还可以直接使用org.springframework.transaction.PlatformTransactionManager来管理事务。只需通过bean引用将您正在使用的PlatformTransactionManager的实现传递给您的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);https://stackoverflow.com/questions/16842852
复制相似问题