# Zugriff auf DB-Tabellen mit Objekten



## anfänger15 (30. Okt 2011)

Hallo,

mir stellt sich die Frage wie kann ich eine Tabelle einer Datenbank am einfachsten in einer Klasse verwenden ohne die Klasse für jede Tabelle selbst zu programmieren.

Hierzu ein Beispiel:

Ich habe in einer Datenbank eine Tabelle Auto. Diese beinhaltet Spalten in denen die Eigenschaften eines Autos gespeichert werden können (z.B. Automarke, ...).

Um die Eigenschaften eines Autos in meinem Programm abzubilden erstelle ich nun eine Klasse cAuto.
Diese Klasse besitzt die Möglichkeit die gesetzten Variablen, welche den Spalten der Tabelle Auto entsprechen in dieser zu speichern. Ebenfalls kann mit dieser Klasse ein Datensatz der Tabelle Auto geladen werden. Diese Klasse dient somit als "Schnittstelle" zwischen Programm und Datenbanktabelle Auto.


Dies bedeutet nun jedoch ich muss für jede Tabelle der Datenbank so eine Klasse manuell anlegen und die Datentypen in der Tabelle und in der Klasse setzen, obwohl diese Informationen bereits in der Datenbank vorhanden sind.


Wie wird der Zugriff auf eine Datenbank in anderen Programmen gehandhabt ohne überall im Programmcode das SQL-Statement zu schreiben?

Bei der Datenbank handelt es sich ja lediglich um die Speicherung der Daten und dies soll an einer zentralen Stelle erfolgen um das Speichern der Daten möglichst unabhängig zu handeln und ein einfaches austauschen der DB in eine andere Speichermöglichkeit zu bieten.


----------



## tfa (30. Okt 2011)

> mir stellt sich die Frage wie kann ich eine Tabelle einer Datenbank am einfachsten in einer Klasse verwenden ohne die Klasse für jede Tabelle selbst zu programmieren.


Ich denke, das ist der völlig verkehrte Ansatz. In einer (objektorientierten) Anwendung sollte die Fachklasse zuerst da sein, daraus ergibt sich dann das Datenbankmodell, also u.a. die Tabellen. Verwende ein Persistenz-Framework wie z.B. Hibernate. Damit geht das alles automatisch. 
Oder hast du ein Altanwendung mit einer schon bestehenden DB, die du jetzt vopn Java aus ansprechen willst? Da kann man sich natürlich was generisches Ausdenken, aber auch hier würde ich mir überlegen, trotzdem jede Klasse einzeln nochmal  zu implementieren. Ist halt eine Fleißarbeit, aber das Ergebnis ist einfach und "straight forward".


----------



## anfänger15 (2. Nov 2011)

Es handelt sich um eine Altanwendung.
In diesem Fall werde ich jede Klasse nochmals einzelt implementieren müssen.

Danke.


----------



## Det (3. Nov 2011)

Die Frage ist, was mit den Daten passieren soll, wenn sie aus der Datenbank in der Anwendung angekommen sind.

Im Normalfall will man mit den Daten ja etwas anfangen, und dazu verwendet man in Java am besten Objekte.

Ich habe andererseits in verschiedenen Projekten, bei denen der konkrete Tabellenaufbau nicht von vornherein bekannt war, die Daten einer Tabellenzeile mit JDBC geholt und als Map gespeichert: Spaltenname (aus den Metadaten des Resultset) -> Feldinhalt.


----------

