Я работаю над логикой доступа к данным в Spring, мой вопрос касается транзакций. Документация по транзакциям http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html показывает, что вы можете реализовать декларативные или программные транзакции. Я решил использовать программный подход, чтобы лучше контролировать происходящее.
Основной шаблон выглядит так:
Product product = new Product();
// load properties
// how do I pass my product object instance to my anonymous method?
transactionTemplate.execute(
new TransactionCallbackWithoutResult()
{
protected void doInTransactionWithoutResult (TransactionStatus status)
{
// transaction update logic here
return;
}});
Возможно, я поступаю неправильно, мой вопрос: как я могу передать аргументы во внутренний анонимный метод? Причина, по которой я хочу это сделать, заключается в том, чтобы я мог создать свой объект график до начала транзакции (потому что транзакции должны быть как можно более короткими по времени, не так ли?) Я хочу, чтобы только часть логики выполнялась в транзакции (логика обновления).
[править]
Пока, похоже, мой единственный выбор - использовать постоянную переменную или просто поместить всю логику в анонимный делегат. Это кажется очень распространенной проблемой ... как вы справлялись с подобными ситуациями в своем собственном коде?