2013-11-21 3 views
0

В настоящее время я работаю над дизайном 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 никто не знает или должен знать, что технология в настоящее время используется для доступа к БД

(я упускаю что-то?)

+1

Либо создайте абстракцию самостоятельно, либо используйте что-то вроде пружины, чтобы прозрачно обрабатывать границы транзакций. –

+0

Разве DAL сама абстракция? – Falaque

+1

Вы можете использовать Spring Transactions в BL и вызвать 2 DAO. – CHowdappaM

ответ

0

Я сделал некоторые исследования (после того, как я получил комментарий на вопрос) Я нашел весну, что мне нужно.

Скажем, в BL у нас есть метод: SomeBLMethod(), который выполняет операцию db с использованием SalesOrderDAO, SalesOrderItemDAO и SomeBLMethod должен находиться под транзакцией. Нам нужно сделать следующее, чтобы сделать работу транзакций:

  • Получить объект SalesOrderDAO, реализация SalesOrderItemDAO с помощью пружинного @Autowired атрибута и выполнить дб OPRATION с помощью этих атрибутов.
  • Сделать транзакцию SomeBLMethod с использованием атрибута sprint @Transactional.
  • Реализация SalesOrderDAO, SalesOrderItemDAO следует использовать @Autowired SessionFactory объект
  • Нам также необходимо сделать некоторые настройки пружины (которые вы можете найти в следующих URL)

Ссылка:.

PS: Я добавляю этот ответ, чтобы помочь другим.

Смежные вопросы