Ich möchte es nur auf meine eigene Weise erklären mit einer kleinen Geschichte, die ich in einem meiner Projekte erlebt habe. Zuerst möchte ich erklären Warum ist DAO wichtig? anstatt zu Was ist DAO? für ein besseres Verständnis.
Warum ist DAO wichtig?
In einem meiner Projekte habe ich Client.class
verwendet, der alle grundlegenden Informationen unserer Systembenutzer enthält. Immer wenn ich einen Client benötige, musste ich einen hässlichen Query machen, wo er benötigt wird. Dann habe ich festgestellt, dass die Lesbarkeit verringert wurde und viel redundanter Boilerplate-Code entstanden ist.
Dann hat einer meiner leitenden Entwickler eine QueryUtils.class
eingeführt, in der alle Abfragen mit dem Zugriffsmodifikator public static
hinzugefügt werden und ich brauche die Abfrage nicht überall zu machen. Nehmen wir an, wenn ich aktivierte Clients benötige, rufe ich einfach auf -
QueryUtils.findAllActivatedClients();
Auf diese Weise habe ich einige Optimierungen in meinem Code vorgenommen.
Aber es gab ein weiteres Problem !!!
Ich fand, dass die QueryUtils.class sehr stark anwuchs. 100+ Methoden wurden in dieser Klasse enthalten, was auch sehr mühsam zu lesen und zu verwenden war. Denn diese Klasse enthält andere Abfragen von anderen Domänenmodellen (zum Beispiel - Produkte, Kategorien, Standorte, etc.).
Dann hat der Superheld Herr CTO eine neue Lösung namens DAO eingeführt, die das Problem schließlich gelöst hat. Ich fand DAO sehr domänenspezifisch. Zum Beispiel hat er einen DAO namens ClientDAO.class
erstellt, in dem alle mit Client.class
verbundenen Abfragen gefunden werden, was für mich sehr einfach zu verwenden und zu pflegen erschien. Die riesige QueryUtils.class
wurde in viele andere domänenspezifische DAO aufgeteilt, z.B. ProductsDAO.class
, CategoriesDAO.class
, etc., was den Code lesbarer, pflegbarer und entkoppelter machte.
Was ist DAO?
Es ist ein Objekt oder eine Schnittstelle, die einen einfachen Zugriff auf Daten aus der Datenbank ermöglicht, ohne jedes Mal auf komplexe und hässliche Abfragen in einer wiederverwendbaren Weise zu schreiben.