Domain Driven Design Model

Generic1

Top Contributor
Hallo,

ich möchte eine einfache Registrierung machen, bei der sich eine Person mit den wichtigsten Parametern (Vor-, Nachname, Geb. Datum und einer Nummer -> Objekt Person ist also ein Entity- Objekt im DDD Sinn) anmelden kann und dies dann in einer Datenbank- Tabelle gespeichert wird.
Ich bin jetzt gerade dabei, mir ein Model für das zu machen und hab mal unteren Vorschlag bin aber nicht zufrieden, da die Klasse "Person" niergends vorkommt.
Auch bin ich mir nicht sicher ob ein Service in DDD Sinn ein Repository verwenden kann/darf.
Was sagt ihr dazu, bin euch dankbar für jeden Tipp in diese Richtung!
Beste Grüße,
generic1-albums-timing-picture81-registration.png
 

Generic1

Top Contributor
OK, Services sind ein eigenständiges Konstrukt der Domain Driven Design und greifen nicht auf Repositories zu, das hab ich jetzt nachgelesen,
von dem her ist die Zeichung oben schon mal falsch.
Wie könnte man das dann darstellen, um dem DDD zu genügen und vor allem, wie kann ich die Klasse Person in das Model integrieren?
 

Generic1

Top Contributor
OK, wahrscheinlich ist die Frage nicht zu beantworten.
Besten Dank trotzdem fürs drüberschaun, ich werds mal mit try an error versuchen.
 
B

bygones

Gast
mein wissen von ddd ist noch rudimentaer, daher eher halbwahrheiten:

"Person" ist doch deine Domain oder ? das hat dann zugriff auf eine (Person)Registry.
Service sind auf Applikationsebene (Transaktionshandling etc), nicht auf Domainebene.

oeh... gibts eigentlich noch ne frage ?!
 

mvitz

Top Contributor
Jetzt wo sich der erste mit Halbwissen traut, traue ich mich auch ;)

Sehe das eigentlich auch so wie bygones. Person ist/gehört zur Domain. Evtl. sogar als Aggregate-Entity. Eine Person bekommt man über ein PersonRepository.

Laut Evans (habe gerade nachgeschaut P. 104 Englische Version) braucht man Services ja dann nur noch, um Domain Aktivitäten durchzuführen, die nicht natürlich in ein Objekt passen. Hierzu würde ich z.B. das speichern einer Person zählen (außer man benutzt hier ActiveRecord).
 

Generic1

Top Contributor
Kein Problem wenns halbwissen ist, hilft mir trotzdem weiter!!

Also grundsätzlich sehe ich das auch so, man benötigt einen service wenn man man gewisses Verhalten nicht einer Entity oder eines VO zuweisen kann, Services gehören aber meiner Meinung nach definitiv zum Domain- Layer und nicht zum Application - Layer (ausser ich hab da was falsch verstanden).

Mein Frage wäre jetzt, wie ich das Model von oben ändern muss, damist die Entity- Klasse Person (Person gehört zur Domain -> würd ich auch sagen) auch mit im Speil ist?
PS: den Service muss man sich wegdenken, der gehört so definitiv nicht zum Model.
 

mvitz

Top Contributor
Das hängt mit Sicherheit auch davon ab, welches Persistenzframework man benutzt. Wir brauchen definitiv:

Java:
class Person { }
mit den dazugehörigen Attributen. Jetzt ist eine Registration ja im Endeffekt ein erstmaliges Anlegen einer Person. Insofern müsste man das ganze dann wohl doch in einen Service lagern. Evtl. so

Java:
class RegisterService {
  void register(Person person) {
    personRepository.save(person);
  }
}

Wobei ich mir dort nicht sicher bin, ob ein Repository sowas wie save kennen sollte. Ansonsten ginge noch so etwas wie

Java:
class RegisterService {
  Person register(String vorname, String nachname) {
    Person p = personRepository.newPerson(vorname, nachname);
    return p;
}

und dann anschließend der Person die anderen Attribute übergeben.
 
M

maki

Gast
DDD untescheidet zwischen sog. Domain Services (was hier schon beschrieben wurde, eine fun ktionalität passt nicht in ein Domain Obejkt) und sog. ApplicationServices, letztere sind was auch in nicht-DDD verwendet wird (SessionBean, etc. pp.).

Das hier von mvitz (sorry) ist imho nicht richtig, zumindest für DomainServices:
Java:
class RegisterService {
  void register(Person person) {
    personRepository.save(person);
  }
}
Bei einem ApplicationService dagegen wäre das wieder ok.

Wobei ich mir dort nicht sicher bin, ob ein Repository sowas wie save kennen sollte.
Wieso dann nicht eine Methdoe register im Repo? ;)
 

Generic1

Top Contributor
Hallo maki,

könntest du ein Beispiel geben, wie so ein Service in Domain- Layer aussehen könnte und ist ein Service das Richtige in meinem Fall, ich hab ja eine Entity "Person", diese Entity soll in der DB gespeichert werden - wäre da ein Repository vorzuziehen indem das Entity "Person" auf das Repository zugreift (und sich speichert?) oder gar ein Service der eine Instance auf das Repository hat und das Repository verwaltet/speichert die Entities "Person" indem es diese Entities vom (Domain-) Service bekommt.
Besten Dank für die Hilfe!.
lg
 
M

maki

Gast
wäre da ein Repository vorzuziehen indem das Entity "Person" auf das Repository zugreift (und sich speichert?)
Nein, dass wäre das sog. "Active Record" Muster und ist genau das Gegenteil von DDD.
Peron braucht doch auhc kein PersonRepository, oder?
Deine 2. Lösung gefällt mir schon besser.
 

Generic1

Top Contributor
OK, das 2. war das:
gar ein Service der eine Instance auf das Repository hat und das Repository verwaltet/speichert die Entities "Person" indem es diese Entities vom (Domain-) Service bekommt.


dsa wäre dann eh genau das, was ich ganz oben aufgezeichnet habe, oder?
für die Benennung wäre aber dann irgendwie doch "PersonRepository" und "PersonService", oder wie benennt man das ordentlich?
Besten Dank,
 

Generic1

Top Contributor
Also wenn da jetzt keine Einwände kommen, dann werde ich das als meinen ersten Ansatz wählen!?
Wäre das OK für einen ersten Ansatz (meine erste Model- Zeichung ganz oben bzw. das letzte was ich geschrieben habe!?)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
M Swing JFreeChart Domain Axis Label Abstand zu TickUnitLabel Allgemeine Java-Themen 9
D IP / Domain in einem String erkennen Allgemeine Java-Themen 2
G Transaction Script, Table- Domain Model Allgemeine Java-Themen 2
Pfirsich Java + Begriff = Pos + Domain (Google API) !!! Allgemeine Java-Themen 14
H domain-spezifisch Allgemeine Java-Themen 4
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
U Frage zu DB Design Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
S design frage Allgemeine Java-Themen 10
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
R Design-Frage Allgemeine Java-Themen 9
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben