Ho letto su Domain Driven Design and Anemic models.
Generalmente lavoro con un ORM come Hibernate e sto cercando di capire in DDD cosa può o non può fare un modello di business.
Ad esempio, se ho un oggetto Cliente, dovrei passare questo a una classe di servizio in modo da mantenerlo nel database poiché non è consigliabile iniettare le classi ORM (repository) nel modello di dominio , Sto bene con questo.
Il problema arriva quando voglio verificare che un oggetto Cliente sia valido, alcuni consigliano che l'oggetto Cliente deve saperlo, ma per sapere che ha bisogno di interrogare la tua origine dati per verificare la presenza di altri clienti corrispondenti (ad es. via email indirizzo).
Sembra che il comportamento debba essere sull'oggetto Cliente stesso, ma cosa fai quando il comportamento richiede dati dal database? Passi questo comportamento a una classe del servizio di dominio?
EDIT:
Oppure, per dirla in un altro modo, diciamo che abbiamo un cliente e un film, sull'oggetto cliente abbiamo un comportamento watch (film). Esiste una regola aziendale che stabilisce che un cliente può solo guardare un nuovo film al mese. Metterei una regola nel metodo dell'orologio (film) per gestirlo. Il problema è che l'oggetto Cliente dovrebbe accedere all'origine dati per ottenere un elenco di tutti i film che l'utente ha guardato, determinare quanti sono stati guardati e anche verificare se il film corrente è uno di loro, e se così lo consente da guardare visto che non è un nuovo film per il cliente, come lo farebbe?
a) quando crei l'oggetto Cliente, crei proprietà per archiviare un elenco di film visti questo mese b) creare una classe di servizio per gestire questa regola in modo che possa interrogare l'origine dati al volo piuttosto che avere i dati guidati con entusiasmo?
Con l'opzione a), sarei preoccupato di gonfiore per l'oggetto del cliente, i dati richiesti solo per un singolo caso d'uso specifico, e mi sembra ragionevole prendere solo i dati richiesti quando è effettivamente necessario.
Questa è una situazione ipotetica, sto cercando di capire come applicare la progettazione basata sul dominio.