Добрый день,
Я пытаюсь создать слой DAO, следуя главным образом this guide.
Обратите внимание, что я не использую никаких фреймворков, просто JDBC.Соединение JDBC внутри слоя DAO
Посмотрите на создание экземпляра соединения:
Внутри каждого метода CRUD мы получаем связь следующим образом:
Connection connection = daoFactory.getConnection();
Таким образом, мы получаем новое соединение каждый раз, когда мы вызываем метод.
Единственный вопрос, который у меня есть, - как реализовать транзакции здесь?
Я вижу два решения:
- Вместо DaoFactory поле, я использую поле Connection, которое я разделяю среди методов. Чтобы иметь одно соединение на DAO. Но тогда, какой уровень должен отвечать за транзакцию? Должен ли я создать что-то между Сервисом - DAO?
- Я создаю поля для других экземпляров DAO, необходимых для создания транзакции. Так, например, я бы имел TransactionDao для реализации banktransfer (возьмите деньги у одного пользователя и добавьте в другой), и у этого TransactionDao будет также UserDao, потому что я должен сделать одно создание и два действия обновления.
Я хочу знать правильное решение, возможно, это ни один из вышеперечисленных.
Скажите, пожалуйста, есть ли какие-либо проблемы с параллелизмом, о которых я должен беспокоиться?
Спасибо
ад не имеет никакой ненависти по сравнению с тем, что я чувствую, когда я вижу, что люди голосуют, чтобы закрыть совершенно резонный вопрос, особенно нового пользователя , –
Я предлагаю вам прочитать это http://stackoverflow.com/questions/12812256/how-do-implement-a-dao-manager-using-jdbc-and-connection-pools?answertab=oldest#tab-top Это может помочь вам ответить на ваши собственные вопросы. – fabfas