Abbiamotrelivellinellanostraapplicazione.Livellodiservizioperfornireun'APIesterna.LivelloBOperlanostralogicaaziendaleeunostratoDAOperlanostraconnessionealdatabase.
Diciamoognivoltacheaggiorniamounfile,vogliamoanchecambiarequalcosanellacartella,adesempio"ultima data di modifica". Questo deve essere fatto in una transazione. O ha successo e sia File sia Folder sono stati modificati. Oppure c'è un errore e la transazione viene ripristinata in modo che entrambi gli oggetti si trovino nello stato precedente.
L'azione "Modifica una cartella quando un file viene modificato" è pura logica aziendale. Quindi questo significherebbe che appartiene al livello BO. Tuttavia, utilizziamo Objectify per il nostro database, quindi per avviare una transazione dobbiamo chiamare ofy (). Transazione (...). Se chiamiamo questa funzione nel livello BO, questo interrompe il nostro progetto in quanto ci saranno chiamate specifiche del database (Objectify) nel nostro livello aziendale.
Quale sarebbe una soluzione pulita per questo problema?