Parlando di MVC con servlet e JSP, in un contesto su prodotti e produttori, quando si interroga l'applicazione per un elenco di prodotti:
- il servlet carica un elenco di prodotti dal database in un oggetto
List
(o simile); - il servlet imposta tale elenco come attributo della richiesta e inoltra la richiesta a un JSP;
- il JSP recupera l'elenco dalla richiesta e ne visualizza i contenuti sulla pagina web.
Se quanto sopra è corretto, la mia domanda è: come carico i produttori di prodotti (supponiamo che ogni prodotto contenga l'id dei suoi produttori)?
Un approccio comune che ho visto è che quando il JSP scorre all'interno dell'oggetto lista, dopo aver mostrato ogni prodotto, viene chiamato un altro metodo di classe che finalmente esegue una query sul database.
Ci sono due cose che non mi piacciono su questo approccio:
- interrompe il pattern MVC;
- diverse query, solitamente separate, vengono eseguite sul database, potenzialmente caricando gli stessi dati (ad esempio quando due prodotti provengono dallo stesso produttore).
È sopra vero? Esistono approcci migliori per risolvere il problema?
Finora sto pensando di fare in modo che un servlet carichi i dati del produttore in un oggetto separato (ad esempio Map
) insieme ai prodotti List
: entrambi gli oggetti sono impostati sulla richiesta e quindi il JSP può accedere sia durante il rendering della pagina.
Un inconveniente (potenzialmente pericoloso) di questa idea è che richiede più memoria per contenere tutte le informazioni; qualcos'altro?