Sto refactoring il mio desiderio di utilizzare un livello di servizio - tuttavia sono confuso su come si passerà gli argomenti, quando è solo permesso di aggiornare determinati campi dell'entità. Ad esempio, ho alcuni campi che possono essere impostati solo alla creazione (metadati). Ma ogni esempio che vedo sul livello di servizio assume l'entità come argomento, ad es. aggiornamento (Entità entità), in cui tutti i valori potrebbero essere stati modificati. Se voglio solo rendere possibile aggiungere ordini (e non modificare qualcos'altro per il cliente). Questo potrebbe essere fatto da:
customer.add(new Order())
service.update(customer)
che sembra molto bello, tuttavia potrei cambiare altri campi nel cliente senza che questo venga notato dal servizio. La mia alternativa sarebbe qualcosa di simile:
service.addOrder(customer, new Order())
Questo sembra ragionevole. Tuttavia, questo potrebbe creare metodi con elenchi di parametri molto lunghi (non validi) e anche caricare la stessa entità due volte (sia in modalità Servicelayer che in quella in cui è stata utilizzata in precedenza). Sarebbe meglio semplicemente creare DTO e metodi per ogni aggiornamento parziale dell'entità? Ciò richiederebbe anche al livello di servizio o al repository di caricare l'entità (eventualmente) già caricata dal database.