Spring пользовательская транзакция в спящем режиме - PullRequest
0 голосов
/ 22 июля 2009

Я хочу самостоятельно управлять транзакцией гибернации, чтобы в любой момент можно было выполнить откат. Я вызываю поток, чтобы заняться бизнесом, но не жду, пока он завершит свою работу и обновит БД. Это обновление доступно только после завершения метода, но я хочу зафиксировать изменения в каждом цикле for, поэтому мне нужно контролировать транзакцию гибернации.

Мой пример кода ниже:

for(BaseFileprocess fileProcess : unprocessedFiles) {
            BaseFileprocessfunctype functionType = fileProcessFunctionTypeService.findBySerno(fileProcess.getFunctioncodeserno());
            if(functionType != null) {
                taskExecutor.execute(new ServiceCallThread(functionType.getFunctionname(), fileProcess.getSerno(), fileProcess.getFilename()));
                fileProcess.setStatu("1");
                fileProcessService.update(fileProcess);//I need commit here
            }
            else {
                System.out.println("There is no defined Function Type");
            }
        }

Есть предложения?

1 Ответ

2 голосов
/ 22 июля 2009

Посмотрите на шаблон транзакции Spring . Из документов:

// single TransactionTemplate shared amongst all methods in this instance
private final TransactionTemplate transactionTemplate;

// use constructor-injection to supply the PlatformTransactionManager
public SimpleService(PlatformTransactionManager transactionManager) {
    Assert.notNull(transactionManager, "The 'transactionManager' argument must not be null.");
    this.transactionTemplate = new TransactionTemplate(transactionManager);
}

public Object someServiceMethod() {
    return transactionTemplate.execute(new TransactionCallback() {

        // the code in this method executes in a transactional context
        public Object doInTransaction(TransactionStatus status) {
            updateOperation1();
            return resultOfUpdateOperation2();
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...