Abbiamo tre livelli nella nostra applicazione. Livello di servizio per fornire un'API esterna. Livello BO per la nostra logica aziendale e un livello DAO per la nostra connessione al database.
Diciamo che ogni volta che aggiorniamo un file, vogliamo anche cambiare qualcosa nella cartella, ad esempio "data ultima modifica". Questo deve essere fatto in una transazione. O ha esito positivo e sia il file che la cartella vengono modificati. Oppure c'è un errore e la transazione viene ripristinata, quindi entrambi gli oggetti sono nello stato precedente.
L'azione "Modifica una cartella quando un file viene modificato" è una logica puramente aziendale. Quindi questo significherebbe che appartiene allo strato BO. Tuttavia, utilizziamo Objectify per il nostro database, quindi per iniziare una transazione dobbiamo chiamare ofy (). Transact (...). Se chiamiamo questa funzione nel livello BO, questo interrompe il nostro design in quanto vi saranno chiamate specifiche del database (Objectify) nel nostro livello aziendale.
Quale sarebbe una soluzione pulita per questo problema?
FileBO
chiamare aFolderBO.edit(newDate)
causa del problema di transazione?