В настоящее время я работаю над дизайном DAL, я имею отношение к управлению транзакциями в Business Layer (BL), не забывая о том, что он не знает о технологиях БД.Сделка по уровню абстракции данных (DAL: уровень доступа к данным)
Для бывших: у меня есть два объектов DAO
SalesOrderDAO, SalesOrderItemDAO
В какой-то момент в БЛ я хотел бы вызвать обновление/метод создания на обоих в сделке:
// some where in BL
SalesOrderDAO soObj = new SalesOrderDAO();
SalesOrderItemDAO soiObj = new SalesOrderItemDAO();
//transaction start
soiObj.create(); // it could be update as well
soObj.update();
//on some condition transaction roll back
//transaction end
Как для того чтобы достигнуть его?
Constraint:
- Я использую Hibernate в DAL.
- Я не хочу, чтобы мой BL знал о спящем режиме.
- Вне DAL никто не знает или должен знать, что технология в настоящее время используется для доступа к БД
(я упускаю что-то?)
Либо создайте абстракцию самостоятельно, либо используйте что-то вроде пружины, чтобы прозрачно обрабатывать границы транзакций. –
Разве DAL сама абстракция? – Falaque
Вы можете использовать Spring Transactions в BL и вызвать 2 DAO. – CHowdappaM