2015-08-03 5 views
5

Ich habe eine "Container" -Klasse mit Feldern, die in mehreren Datenbanktabellen enthalten sind, und ich verwende das DAO-Muster für den Zugriff auf die Daten.Ein DAO pro "Container" -Klasse oder ein DAO pro Tabelle?

Die Frage ist, sollte ich ein einzelnes DAO für diese "Container" -Klasse erstellen, oder ist es besser, ein DAO pro Tabelle zu haben und ihre Daten zu kombinieren?

Antwort

10

Sie sollten Ihr DAO entsprechend Ihren Anwendungsanforderungen entwerfen, nicht dem Layout Ihrer Datenbank. Beginnen Sie mit einem DAO, und wenn es zu groß wird, refaktorieren Sie es in mehrere DAOs auf eine Weise, die für Ihren Code sinnvoll ist.

Der ganze Punkt eines DAO ist verstecken alle Datenbankkonzepte (wie Tabellen) aus Ihrer Anwendung. Ihre Anwendung sollte es nur als einen Dienst mit einigen nützlichen Methoden anzeigen.

Wenn Ihre Anwendung beispielsweise einige Benutzerdaten benötigt, die sowohl aus der Tabelle "Users" als auch aus der Tabelle "EmailAddresses" stammen, sollte Ihr Anwendungscode nicht zwei DAOs koordinieren - sie sollte eine DAO-Methode getUserDetails() aufrufen verberge die Tatsache, dass mehrere Tabellen aufgerufen werden müssen.

Ich empfehle die erste der Optionen in Ihrer Frage, aber ich würde nicht auf die Regel "ein DAO pro Container-Klasse" beschränken.