Как программно получить PlatformTransactionManager из DAO? - PullRequest
0 голосов
/ 18 декабря 2010

Я разрабатываю универсальное приложение CRUD с калиткой, которое может редактировать любые сущности Spring / JPA с реализацией шаблона AbstractDao, такие как UserDaoImpl, ForumDaoImpl ... и т. Д.

На моей странице калитки: Я должен использовать @SpringBean, чтобы определить, какой PlatformTransactionManager использовать, например:

@SpringBean(name="transactionManagerUser")
private PlatformTransactionManager transactionManagerUser;
private TransactionTemplate txTemplate;

public CrudPage(final PageParameters pps , final AbstractDao<T> dao)
{
  super(pps);
  txTemplate= new TransactionTemplate(transactionManagerUser);
}

Проблема в том, что эти DAO используют разные менеджеры транзакций, такие как transactionManagerUser, transactionManagerForum ... и т. Д.

Я не могу жестко закодировать имя этих txManager в моем коде. Я должен программно получить дао txManager. Как этого добиться?

Большое спасибо!

------- обновлено -------

Что ж, я решил эту проблему, передав PlatformTransactionManager странице CRUD (и использую transactionTemplate = new TransactionTemplate(platformTransactionManager) для генерации txTemplate ', и она работает хорошо. Хотя и не решает проблему напрямую, в любом случае, она работает.

1 Ответ

3 голосов
/ 18 декабря 2010

И почему вы думаете, что вы должны использовать логику транзакций в своем коде?Spring использует аспекты для декларативного управления транзакциями, поэтому вам не нужно.Если вы думаете, что вам нужно, вы делаете это неправильно.

Транзакции не должны входить в компетенцию DAO;службы владеют транзакциями и управляют ими, поскольку в одной транзакции может участвовать несколько DAO.

Интересно, зачем вам несколько менеджеров транзакций?Если у вас есть несколько баз данных, вы должны использовать драйверы XA для каждой и один менеджер транзакций для обработки двухфазной фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...