Considerare il seguente tipo di applicazione Web Java / Spring, con un database SQL:
- ci sono più tipi di entità di dati (circa 100) con relazioni tra loro
- le entità sono visualizzate, modificate o esposte alle API e spesso ciò accade con diversi tipi di entità (uniti)
L'approccio attuale utilizza tre livelli:
- un livello dati, che interroga le tabelle e utilizza entità che corrispondono 1: 1 al database
- un livello di servizio per eseguire la logica di business e chiamare il livello dati come necessario
- un livello controller - esponendo le operazioni al codice lato client e all'API
Le mie domande relative alla gestione dei modelli sono:
- Ogni livello dovrebbe avere i propri modelli / classi di entità? Se sì, come è meglio gestire la copia / fusione dei modelli attraverso i livelli?
- A volte, a livello di servizio, un'entità potrebbe richiedere che alcuni campi vengano compilati in un caso, ma non in altri casi. Dovrebbero esserci due classi modello per queste due situazioni? (Per essere certo di poter contare su quali campi sono forniti dal servizio)
- Dato il gran numero di entità, vale la pena essere coerenti nell'affrontare le questioni di cui sopra nello stesso modo, indipendentemente da eventuali complessità aggiuntive coinvolte?