W naszej aplikacji mamy trzy warstwy. Warstwa usługi zapewniająca zewnętrzny interfejs API. Warstwa BO dla naszej logiki biznesowej i warstwa DAO dla naszego połączenia z bazą danych.
Powiedzmy, że za każdym razem, gdy aktualizujemy plik, chcemy również coś zmienić w folderze, na przykład „data ostatniej modyfikacji”. Trzeba to zrobić w transakcji. Albo się powiedzie, a plik i folder są edytowane. Lub wystąpiła awaria i transakcja zostaje wycofana, więc oba obiekty są w poprzednim stanie.
Działanie „Edytuj folder podczas edycji pliku” jest logiką czysto biznesową. Oznaczałoby to, że należy do warstwy BO. Jednak używamy Objectify dla naszej bazy danych, więc aby rozpocząć transakcję, musimy wywołać ofy (). Transact (...). Jeśli wywołamy tę funkcję w warstwie BO, spowoduje to przerwanie naszego projektu, ponieważ w naszej warstwie biznesowej będą pojawiać się wywołania specyficzne dla bazy danych (Objectify).
Jakie byłoby czyste rozwiązanie tego problemu?
FileBO
zadzwonić zFolderBO.edit(newDate)
powodu problemu z transakcją?