Ich persönlich würde einen Datenlayer dazwischen ziehen, und für jede Klasse Reader und Writer-Klassen implementieren. Für Übersichten (Reports, Listen) schreibe ich eine Datenklasse für die Darstellung und die entsprechende
Query-Klasse für das Befüllen
Für jede Speicherart bzw. Datenbank schreibe ich dann einen individuellen
Query. Reader und Writerklassen.
Der eigentliche Zugriff auf die
DB erfolgt dann mit einem der hier schon vorgeschlagenen Frameworks.