Persistenz- vs Domänenmodell

Domänen- vs. Persistenzmodell

In diesem gut geschriebenen Artikel vergleicht Mehdi Khalili unterschiedliche Ansätze zur Trennung eines Persistenz- und Domänenmodells bei der Softwareentwicklung: ORM anti-patterns – Part 4: Persistence vs Domain Model. Obwohl der Artikel schon von 2011 ist, finde ich ihn immer noch höchst relevant für die Praxis. Gerade vor Kurzem habe ich mit meinen Azubis über die Vor- und Nachteile verschiedener Möglichkeiten bei der Trennung von Persistenz- und Geschäftslogik gesprochen.

Es gibt meiner Meinung nach kein Allheilmittel für die Abbildung von objektorientierten Domänenmodellen auf relationale Persistenzmodelle. Auch ORMs machen uns das Leben zwar grundsätzlich leichter (immerhin müssen wir kein SQL mehr schreiben), aber sie führen durchaus neue Probleme oder Fragestellungen ein. Alle vorgestellten Lösungsansätze haben Vor- und Nachteile, die es gegeneinander abzuwiegen gilt.

Der obige Artikel verdeutlich schön die zu berücksichtigenden Punkte verschiedener Ansätze, z.B. der kompletten Trennung beider Modelle (was zu Redundanzen und nervigen Mappings führt, aber eine freie Evolvierbarkeit beider Modelle ermöglicht). Ich empfehle ihn jedem Softwareentwickler, der sich mit der Speicherung seiner Daten in einer relationalen Datenbank auseinandersetzen muss.


Welche Technologien verwendest du für die Persistenz? Verfolgst du eine bestimmte Strategie bei der Speicherung deiner Daten in der Datenbank?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax