Ecco la mia opinione su come risolvere questo tipo di problema nel modo in cui sto attualmente praticando DDD.
Se si modifica qualcosa che richiede l'aggiunta e la rimozione di tag come Post, i tag possono essere entità ma potrebbero essere oggetti valore e vengono caricati e salvati insieme al post in entrambi i casi. Personalmente tendo a privilegiare gli oggetti valore a meno che l'oggetto non debba essere modificato, ma mi rendo conto che esiste una differenza tra oggetti entità modellati come "istantanee" di sola lettura e oggetti a valore reale privi di identità. La parte difficile è che forse a volte ciò che normalmente penseresti come una chiave potrebbe essere parte di un oggetto valore purché non venga utilizzato come identità in quel contesto e penso che i tag rientrino in questa categoria.
Se si modificano i tag stessi, si tratta probabilmente di un contesto separato separato o almeno di un aggregato separato in cui i tag stessi sono la radice aggregata e persistono attraverso un repository. Si noti che la classe di entità che rappresenta i tag in questo contesto non deve essere la stessa classe di entità per i tag utilizzati in Posta aggregata.
Se i tag disponibili sull'elenco sono disponibili solo a scopo di lettura, in modo da fornire un elenco di selezione, è probabile che sia un elenco di oggetti valore. Questi oggetti valore possono ma non devono essere nel modello di dominio poiché riguardano principalmente l'interfaccia utente e non il dominio effettivo.
Per favore, interpella se qualcuno ha qualche idea sul perché la mia interpretazione di questo potrebbe essere sbagliata, ma questo è il modo in cui l'ho fatto.
I database relazionali e le ORM ci ingannano spesso nella creazione di entità accidentali http://www.jefclaes.be/2013/05/accidental-entities-you-dont-need-that.html – JefClaes
grazie per il collegamento – yeraycaballero
@yeraycaballero Se salvi valore oggetto in una colonna di testo (opzione 3), come devo fare per eseguire un aggiornamento atomico sull'oggetto valore? –