Ho aderito a un progetto in corso, in cui il team chiama la sua architettura "basata su componenti". Il livello più basso è un grande database. L'accesso ai dati (tramite ORM) e i livelli aziendali sono combinati in vari componenti. Ad esempio, c'è un componente per la gestione dei conti bancari, uno per la generazione di fatture, ecc. Quindi ogni componente contiene l'accesso ai dati solo a una parte dello schema. Il mio problema è l'accoppiamento dell'accesso ai dati e della logica aziendale in una tale struttura, perché mentre una tale partizione ha senso per la logica aziendale, complica l'accesso ai dati.
Dal mio punto di vista la separazione dello strato di accesso ai dati in vari componenti sembra controproducente, perché ci nega le capacità di mappatura relazionale dell'ORM. Ad esempio, quando desidero interrogare tutte le fatture per un cliente, devo identificare il cliente con il componente "clienti" e quindi effettuare un'altra chiamata al componente "fatture" per ottenere le fatture per questo cliente. L'entità Cliente non può avere una proprietà Ordini, perché gli Ordini sono mappati in un altro componente.
Qualcuno ha qualche consiglio? Ho trascurato qualcosa?