# Anbindung zu JDBC



## Gast (24. Okt 2005)

Hallo miteinander!

Ich plane gerade ein kleines Projekt mit Java+ JDBC für die Anbindung zur Datenbank.

Dabei gibt es 2 Teile:
1. den Gui Bereich
2. das "Interface", welches mit der Datenbank kommuniziert

Beide Teile sollen austauschbar sein!
nun habe ich folgenden Lösungsansatz:

für das "Interface" erstelle ich ein Interface welches folgenden Funktionen umfassen sollte:

Eine Art Suchfunktion

```
public void fetchData(Hashtable hs,String targetTable);
```

Eine Update Funktion

```
public void updateData(int ID,Hashtable hs,String targetTable)
```

und eine Schreibfunktion

```
public void insertData(int ID,Hashtable hs,String targetTable)
```

Damit die Daten dann auch angezeigt werden, habe ich mir ein Interface für den Gui Bereich überlegt:

eine Anzeigefunktion für einen Record

```
public void displayRecord(Hashtable hs)
```

und eine Anzeigefunktion für mehrere Daten

```
public void displayRecords(Hashtable hs)
```

Weiters möchte ich eine Liste erstellen die die einzelnen Namen der Tabellenspalten enthält:
z.B. mit konstanten Strings:
String ID="id", name = "NAME",address="ADDRESS";

Hashmap verwende ich damit ich eben somit dann die Werte der Tabellenspalten lesen kann, als Wert befindet sich bei mehreren Daten ein Array oder ein String in der Hashmap.

Ist diese Lösung eurer Meinung nach sinnvoll bzw. passend oder könnte man z.B. auch ResultSets anstatt Hashtables verwenden(geht dann allerdings nur wenn eine SQL Datenbank dahintersteckt).

Für Kommentare bin ich sehr dankbar.

mfg Peter


----------



## Guest (24. Okt 2005)

Mach' die Persistensschicht einfach austauschbar, indem du vorgibst, welche 
Funktionalität diese bieten soll.
z.B. über Interfaces, die implementiert werden müssen.
	
	
	
	





```
interface PersonPersistence {
  public List getAll() throws PersistenceException;
  public Person getById(int id) throws PersistenceException;
  ...
  public void insertPerson(Person person) throws PersistenceException;
  public void updatePerson(Person person) throws PersistenceException;
  public void deletePerson(int id) throws PersistenceException;
}
```
In der GUI (egal, ob Web, Swing oder SWT) arbeitest du ganz normal mit 
Objekten, während der Rest austauschbar ist. 
Du kannst z.B. eine Implementierung von PersonPersistence schreiben, die 
direkt über JDBC auf die Datenbank zugreift oder über EJB etc.
Beides ist einfach austauschbar und kann unabhängig voneinander getestet
werden.


----------



## Guest (24. Okt 2005)

Noch etwas. Versuche es zu vermeiden Exceptions von einer Schicht 
zur anderen zu transportieren.
Klartext: JDBCException oder RemoteException etc. haben im Code 
der Benutzeroberfläche nichts zu suchen. Lieber in der Zwischenschicht 
in eigene Exceptions mit zusätzlichen Informationen etc. konvertieren.
Gleiches gilt für ResultSets u.ä.


----------



## Gast (24. Okt 2005)

Hi,

Danke für deine Antwort und Tipps!

Ich habe noch einige Fragen:
Ich möchte mehrer Personen von der Datenbank laden, so um die 600
frisst da das Porgramm nicht ziemlich viel Speicher? oder wäre das mit z.B. Hashtables genauso schlecht?

und wie sollte die Personenklasse aussehen? mit lauter Konstanten oder auch get set Methoden?
(In der Datenbank sind das ca. 20 Felder für eine Person)

Nochmals vielen Dank für deine Antwort!!!


----------



## Gast (24. Okt 2005)

tschuldigung die Personenklasse sollte natürlich keine Konstanten enthalten ist ja von Person zu Person verschieden 
ignorier das einfach bitte, hab leider nicht die Möglichkeit als Gast hier etwas zu ändern!


----------



## Guest (24. Okt 2005)

Bei 600 Datensätzen würde ich mir noch keine Gedanken machen.
Wenn es irgendwann zum Problem wird, kannst du dich nach 
Alternativen umschauen. (Iterator-, ValueList-Pattern etc.)
Kein Mensch kann 600 Datensätze auf einmal betrachten, es sei 
denn er hat so einen Monitor. :bae: 

Du kannst das Ergebnis der Suche oder die Ergebnisse von 
Abfragen allgemein, auf z.B. 500 Datensätze beschränken.


----------



## Gast (24. Okt 2005)

Okay, 

Du musst wissen ich hatte noch nie so viele Einträge zu lesen 
aber ich möchte eben alle Daten am Anfang in eine JTable darstellen und zwar alle 600(allerdings nur mit den wichtigstend Feldern, Name, Vorname ...)!


----------

