Wir haben drei Schichten in unserer Anwendung. Service-Schicht zur Bereitstellung einer externen API. BO-Schicht für unsere Geschäftslogik und DAO-Schicht für unsere Datenbankverbindung.
Angenommen, wir möchten jedes Mal, wenn wir eine Datei aktualisieren, auch etwas im Ordner ändern, z. B. das Datum der letzten Änderung. Dies muss in einer Transaktion erfolgen. Entweder ist es erfolgreich und sowohl Datei als auch Ordner werden bearbeitet. Oder es liegt ein Fehler vor und die Transaktion wird zurückgesetzt, sodass sich beide Objekte im vorherigen Status befinden.
Die Aktion "Ordner bearbeiten, wenn eine Datei bearbeitet wird" ist reine Geschäftslogik. Das würde also bedeuten, dass es in die BO-Schicht gehört. Wir verwenden jedoch Objectify für unsere Datenbank. Um eine Transaktion zu starten, müssen wir ofy (). Transact (...) aufrufen. Wenn wir diese Funktion in der BO-Schicht aufrufen, bricht dies unser Design, da es in unserer Business-Schicht datenbankspezifische Aufrufe (Objectify) gibt.
Was wäre eine saubere Lösung für dieses Problem?
FileBO
anrufenFolderBO.edit(newDate)
?