2016-04-15 4 views
1

Nachdem ich einige Seiten von DDD gelesen habe, habe ich über das Repository-Muster gelesen und es dann erfolgreich in einer Anwendung verwendet (ich mochte es wirklich); dann bemerkte ich, dass EntityManagergeneric-repository-like ist, aber während ich über Repository lese ich sah im Web viele Beispiele erläutern, wie Repository Muster impliment und JPA war eine einfache Repository Implementierung zwischen vielen Implementierungen, wie diese Website: http://www.lestard.eu/2015/generic_repository_part1/JPA zu WebServices erweitern

Der Entwickler demonstrierte In-Memory-Implementierungen des Repository-Musters und im zweiten Teil: http://www.lestard.eu/2015/generic_repository_part2/, zeigte JPA-Implementierung von Repository-Muster.

Also hier meine Frage: Während JPA bereits wie ein generisches Repository ist, können wir JPA auf In-Memory, Web Services (zB REST CRUD) und Entity Persistent erweitern - da JPA für Java PERSISITENCE API steht, (Ich habe es in Großbuchstaben geschrieben, um zu zeigen, dass es einen allgemeinen Persistenzmechanismus bedeutet) - wie es scheint, dass die derzeitige JPA eng mit Datenbanken verbunden ist, aber ihr Name bezieht sich auf eine allgemeine Verwendung.

Antwort

1

Technisch ist es möglich, aber ich möchte dies nicht tun und habe keine Links zu bestimmten Implementierungsstandards (wie Java JPA). Ich bevorzuge es, alle Implementierungsdetails in meinem Repository Impl zu verstecken.

Außerdem habe ich definitiv nicht mag Idee jede persistierende (wie @Entity) oder Umwandlung zu setzen (wie @XmlRootElement von JAXB oder @JsonProperty) Anmerkungen in meinem Domain-Objekte.

Der Grund ist der einfache: wenn Sie in Zukunft Java JPA zu etw. Wie Java Neue JPA ändern, müssen Sie Ihre Domain-Objekte auch dafür ändern. Aber es widerspricht der ganzen DDD-Idee.

+0

Sie können zwischen dem zugeordneten Objekt und dem Domänenobjekt unterscheiden. –

+1

@LaVloZMerrill sicher. Praktisch habe ich z.B. 'SettlementMessageEntity' Klasse für persisting (mit Annotationen, einige zusätzliche' id' Felder etc.) und 'SettlementMessage' als Domain-Objekt. Aber hier ist ein weiteres Problem: Umwandlung von Entitäten in DDO und umgekehrt. –

+0

es umgibt mehr complixity zum Projekt:/ –