Ciao Sto attualmente sviluppando un'applicazione web in Spring e Hibernate in cui ho diverse tabelle diverse. La tabella di consegna, ad esempio, viene mappata molti a uno con la tabella Cliente e la tabella Prodotto.
Mi chiedo quale sia la migliore pratica per creare una funzione di visualizzazione in cui visualizzo tutte le colonne relative a ciascuna consegna ma escludo i diversi ID.
Posso pensare a due modi per farlo:
-
Creare un DTO (oggetto di trasferimento dati) con tutte le colonne che desidero visualizzare e quindi nel controller creo una nuova istanza di esso e imposta i diversi valori con setter e servizi in un ciclo for per ogni Delivery ID. questo è il metodo utilizzato nell'esempio . Qui è parte del codice del controller da esso:
@RequestMapping(value = "/list", method = RequestMethod.GET) public String getRecords(Model model) { logger.debug("Received request to show records page"); // Retrieve all persons List<Person> persons = personService.getAll(); // Prepare model object List<PersonDTO> personsDTO = new ArrayList<PersonDTO>(); for (Person person: persons) { // Create new data transfer object PersonDTO dto = new PersonDTO(); dto.setId(person.getId()); dto.setFirstName(person.getFirstName()); dto.setLastName(person.getLastName()); dto.setMoney(person.getMoney()); dto.setCreditCards(creditCardService.getAll(person.getId())); // Add to model list personsDTO.add(dto); } // Add to model model.addAttribute("persons", personsDTO); // This will resolve to /WEB-INF/jsp/records.jsp return "records"; }
- il secondo modo che sto considerando è quello di creare una query HQL che unisce le tabelle rilevanti e quindi la visualizzazione. Non sono ancora sicuro di come farlo.
Quindi quale delle alternative è il modo migliore per andare? Ce ne sono altri a cui non ho pensato?
Grazie per il consiglio, D