Datenbank-Abstraktion

soyo

Erfahrenes Mitglied
Hallo,

ich arbeite gerade an einem kleinen Programm für die Uni. Als DB soll dieses CSV-Files verwenden, jedoch will ich die Möglichkeit haben später leicht auf SQL, SQLite oder Ähnliches umzusteigen. Also versuche ich gerade die Datenbank Geschichte so weit wie möglich zu abstrahieren.
Meine "CSV-Datenbank-Treiber"-Klasse hat Methoden wie getAllRows() oder deleteRow(). Diese Methoden soll natürlich später auch meine anderen Datenbank-Klasse bereitstellen. Über ein Interface lege ich fest das beide die benötigten Methoden liefern.
In meinem Programm soll nun einfach festgelegt werden, welche Datenbank-Klasse verwendet wird. Also zB:

Code:
DB DBDriver = new DBDriver("CSV", "test.csv"); 
DBDriver.getAllRows();
Wobei also Attribute der Datenbank-Typ sowie ein Connection-String übergeben wird. Bei CSV ist das halt der Pfad zur CSV-Datei.

Die Klasse DB macht dann nix anderes als ein Object der Klasse DBDriverCSV zu erstellen und den Connectionstring "test.csv" dem Konstruktor zu übergeben. Zusätzlich wird dann über das Object DBDriverCSV.getAllRows() aufgerufen.

Ich hoffe ich habe meine Problematik etwas verständlich dargestellt. Wie würdet ihr so etwas ansatzweise realisieren?


mfg
 
Hallo,

Geschickt löst man sowas über das Design-Pattern DataAccessObject oder kurz DAO.

In einem DAO sind dann alle Methoden die man benötigt um Objekte zu speichern oder zu laden oder zu löschen.

Beispiel:
Du hast eine Klasse Person, die als Attribute Name, Vorname, Geschlecht und vielleicht noch andere Sachen hat.
Dann schreibst du dir dazu ein DAO mit den Standard CRUD-Methoden, also create oder save, read, update und delete. Alle Methoden bekommen dann ein Person-Objekt übergeben. Nur die read-Methode bekommt den PrimaryKey übergeben und liefert ein Person-Objekt zurück.
Dann kannst du noch andere Methoden hinzufügen wie beispielsweise findAll, die dir dann eine Liste zurückgibt.

Wenn du die dazu ein Interface erstellst kannst du die Implementierung einfach tauschen.

http://www.tutorials.de/java/285260-data-access-object-java.html

Gruß

Sascha
 
Zurück