Mi sono imbattuto in una classe DTO come quella in basso.
class PersonDTO {
private String firstName;
private String middleName;
private String lastName;
private String dob;
// some 50 fields more
private List<PersonDTO> persons;
//getters and setter
}
Domanda 1: è una buona pratica avere classi DTO così grandi con così tante proprietà?
Domanda 2: è una buona pratica avere una classe DTO con un ArrayList del suo tipo? Non causerebbe un riferimento circolare?
Aggiornamento:
Lavoro per un prodotto nel settore sanitario. Il caso d'uso è di generare un rapporto di tutti gli utenti nel sistema. Insieme alla lista degli utenti, il report deve anche mostrare le informazioni di riepilogo. I dati devono essere serializzati, perché l'interfaccia utente è in attesa di una risposta JSON.
Di seguito è l'effettivo DTO che stavo prendendo circa.
Un metodo è stato scritto nella classe DAO, che restituisce un oggetto UserDTO. Questo oggetto UserDTO che viene restituito .. consiste in un elenco di tutti gli utenti e alcune informazioni di riepilogo come: medici totali, infermieri totali ecc.
class UserDTO{
private String userID; //This is unique
private String firstName;
private String middleName;
private String lastName;
private String dob;
private String userType; // value can be DT(for doctor), ST(for nurse),
private int totalDoctorCount; //Holds the total number of UserDTOs with userType value set to DT in the ArrayList of users.
private int totalNurseCount; //Holds the total number of UserDTOs with userType value set to ST in the ArrayList of users.
// there are some 40 more properties.
private List<UserDTO> users;
//In this class there are also properties like below...
private String primaryAddrStreetName;
private String primaryAddrCity;
private String primaryAddrState;
private String primaryAddrCountry;
private String primaryAddrZipcode;
private String billingAddrStreetName;
private String billingAddrCity;
private String billingAddrState;
private String billingAddrCountry;
private String billingAddrZipcode;
private String shippingAddrStreetName;
private String shippingAddrCity;
private String shippingAddrState;
private String shippingAddrCountry;
private String shippingAddrZipcode;
}
Domanda 3: questo design DTO è adatto a questo caso d'uso? se no, allora cosa suggeriresti?
Domanda 4: l'utente ha più indirizzi. Ma, i dettagli dell'indirizzo non dovrebbero essere nella sua classe (qualcosa come UserAddressDTO) e quindi dovremmo aggiungere un array / ArrayList di UserAddressDTO in UserDTO ??
Domanda 5: Si prega inoltre di fornire alcune informazioni su come questo tipo di DTO possa influenzare la memoria JVM. Il rapporto recupera migliaia di record.