Le migliori pratiche per la creazione di viste in primavera e l'applicazione Web di ibernazione

0

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:

  1. 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";
     } 
    
    1. 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

    
posta dlinx90 24.05.2012 - 13:15
fonte

1 risposta

1

Con le tecnologie ORM ci sono molti modi per affrontarlo. Penso che entrambi i modi che suggerisci siano adeguati, ma aggiungerò l'angolo di preoccupazione delle prestazioni.

Se hai problemi di prestazioni, ti suggerisco di guardare l'SQL prodotto (show_sql) e il traffico di rete tramite il driver JDBC (usa P6Spy o simile) in entrambe le versioni e vedere quale impatto hanno.

    
risposta data 24.05.2012 - 13:37
fonte

Leggi altre domande sui tag