Ich erstelle einen RESTful Webservice, der Repository-Details von Github abruft und sie zurückgibt. Mein Code sieht wie folgt aus:Entity vs ValueObject
@GetMapping(value = "/{owner}/{repositoryName}")
@ResponseStatus(HttpStatus.OK)
public RepositoryDetails getRepositoryDetails(@PathVariable String owner, @PathVariable String repositoryName) throws Exception {
log.info("Github repository details request: owner: " + owner + ", repository name: " + repositoryName);
checkParameters(owner, repositoryName);
RepositoryDetailsInternal repositoryDetailsInternal = repoService.getRepositoryDetails(owner, repositoryName);
RepositoryDetails repositoryDetailsOutput = new RepositoryDetails(repositoryDetailsInternal, LocaleContextHolder.getLocale());
return repositoryDetailsOutput;
}
Wie Sie sehen können, gibt es zwei wichtige Objekte: repositoryDetailsInternal
und repositoryDetailsOutput
. repositoryDetailsInternal
ist die geparste Antwortdaten von Github und repositoryDetailsOutput
ist das Ausgabeobjekt von meinem Webservice zurückgegeben.
Meine Frage ist: Was ist jedes dieser Objekte - eine Entität oder ein Wertobjekt?
Ich bin in Richtung Berufung repositoryDetailsInternal
eine Entität und repositoryDetailsOutput
ein Wertobjekt, aber ich möchte eine zweite Meinung dazu.
Auf der einen Seite, repositoryDetailsInternal
ist etwas, das im Laufe der Zeit geändert werden kann (Stargazers Anzahl kann erhöhen oder verringern), aber auf der anderen Seite in meiner Anwendung ist dieses Objekt unveränderlich.
EDIT: Ich sollte auch erwähnen, dass repositoryDetailsInternal
Eigentümer unter Verwendung zwischengespeichert wird und Repository-Name, so kann es als Identität wahrgenommen werden:
@Cacheable(REPO_DETAILS_CACHE)
public RepositoryDetailsInternal getRepositoryDetails(String owner, String repositoryName) throws TimeoutException {...}
repositoryDetailsOutput
ist auch unveränderlich und scheint wie ein Wertobjekt, weil Es stellt eine Art Momentaufnahme des Repository-Status dar.
Vielleicht möchten Sie das? http://stackoverflow.com/questions/14161753/class-object-entity-whats-the-difference. IMHO (im) Mutabilität ist orthogonal zu "eine Entität sein", wie sie veränderlich oder unveränderlich sein können (wie Sie Entität mit beispielsweise vergangenen Ereignissen haben können, die sich nicht ändern). – Piohen