![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
GShadrin |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Добрый день.
Не могу придумать как хорошо увязать паттерн DAO и использование транзаций. На данный момент:
Connection получаю внутри DAO вызовом
Нужны транзакции. Как вариант передавать connection в конструктор DAO и обернуть создание и коммит транзакции в DAOFactory. Но в таком случае в бизнес логику попадает некая логика работы с Connection (получение из Factory, передача в конструктор). Может быть кто-то может подсказать правильную реализацию DAO с транзакциями. Это сообщение отредактировал(а) GShadrin - 27.7.2013, 19:28 |
||||||||
|
|||||||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Вы используете какой-нибудь IoC контейнер для склеивания? Например, Спринг? В этом случае типичным решением было бы использовать аспекты, которые отвечают за работу транзакций.
Если нет возможность использовать АОП, вполне можно сделать это самому с помощью паттерна декоратор. И последнее, часто более правильным решением было бы управлять транзакциями на уровле служб, а не ДАО - т.е. открывать транзакцию перед выполнением какого-либо бизнес кейса, а закрывать только в случае успешного его завершения. |
|||
|
||||
GShadrin |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
IoC контейнер не использую. Компоненты системы в принципе разнесены на модули, при старте системы определяется какие реализации компонент использовать
Затем вызывается примерно так:
Конечно в какой-то степени велосипеды. В принципе думал вынести логику транзакций в отдельный компонент. В бизнес логике при старте бизнес кейса создавать/закрывать транзакцию. В таком случае придется все операции с DAO выполнять в одном Connection, но не хочу, чтобы бизнес действия вообще что-то знали про Сonnection. Это сообщение отредактировал(а) GShadrin - 28.7.2013, 22:32 |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |