Ho un'applicazione web a 3 livelli con un livello di visualizzazione Web, un livello di logica aziendale e un livello di persistenza del database. Sto aggiungendo una funzione che popola una tabella cronologia con i record se e solo se l'elemento che si sta salvando è cambiato (confronta i record precedenti e quelli correnti e salva i record della cronologia se qualcosa è cambiato).
Non sono sicuro che la logica della creazione dei record della cronologia e del loro salvataggio appartenga al livello della logica aziendale o al livello di persistenza del database. Il livello di persistenza del database ha un unico metodo saveElement. Il livello della logica aziendale ha più posizioni che chiamano il metodo saveElement della persistenza del database.
Vantaggio di inserire la logica della cronologia nel livello di persistenza del database:
-Se la logica è stata inserita nel livello della business logic, c'è il rischio che alcuni dei chiamanti del livello della logica di business si dimentichino di chiamare il metodo per creare i record della cronologia. Se la logica è stata inserita nel livello di persistenza del database, è garantito che ogni record salvato abbia un record della cronologia creato.
-Il sito ha un altro sistema di cronologia per altre informazioni che si trovano nel livello del database e creerebbe consistenza se entrambi i sistemi si trovassero nello stesso posto.
Vantaggio di collocare la logica della cronologia nel livello della business logic:
-Ci è un po 'di complessità nella creazione dei record della cronologia e il livello del database è usato principalmente per chiamare / eseguire query SQL.
Quindi esistono motivi validi per posizionare questa logica nel livello della business logic o nel livello del database? O non importa dove si trova la logica?