У нас есть три слоя в нашем приложении. Сервисный уровень для предоставления внешнего API. Уровень BO для нашей бизнес-логики и уровень DAO для нашего соединения с базой данных.
Допустим, каждый раз, когда мы обновляем файл, мы также хотим что-то изменить в папке, например, «дата последнего изменения». Это должно быть сделано в транзакции. Либо это успешно, и файл и папка редактируются. Или происходит сбой, и транзакция откатывается, так что оба объекта находятся в предыдущем состоянии.
Действие «Редактировать папку, когда файл редактируется» - это чисто бизнес-логика. Так что это будет означать, что он принадлежит слою BO. Однако мы используем Objectify для нашей базы данных, поэтому для запуска транзакции нам нужно вызвать ofy (). Transact (...). Если мы вызовем эту функцию на уровне BO, это нарушит наш дизайн, поскольку на нашем уровне Business будут специфические вызовы базы данных (Objectify).
Какое будет чистое решение для этой проблемы?
FileBO
позвонитьFolderBO.edit(newDate)
из-за проблемы транзакции?