# Anfänger: Welche Datenbank ist sinnvoll?



## gurumusch (14. Aug 2004)

Hi Leute,

ich schreibe gerade an einem Schaltplaneditor mit dem man einfache Schaltpläne erstellen und drucken kann. Mit Java an sich bin ich eigentlich recht gut vertraut und hab früher auch schon mal eine kleines DB-Prog unter Delphi geschrieben, aber von JDBC weiß ich halt noch nicht viel.
Jetzt möchte ich die elektrischen Bauteile in meinem Programm in einer Datenbank speichern. Welche Datenbank macht da Sinn (Hab früher mal mit Paradox7 gearbeitet)? Und wie groß ist der Aufwand wenn ich das Programm weitergeben will?

Gruß Frikkie


----------



## Guest (14. Aug 2004)

Der Aufwand is ziemlich groß, weil du ja dem User zumuten mußt, dass er eine Datenbank installieren muss, die Datebank einrichten muß (das kannst auch mit script automatisieren)...
Am besten du speicherst das ganze in XML-Files.

Kannst ja dir mal unter www.javabuch.de  dir das Buch runterladen. Da steht einiges zu JDBC. 
Für XML-Files schau mal unter http://today.java.net/pub/a/today/2004/08/12/groovyxml.html .

MFG 
Achill


----------



## Achill (14. Aug 2004)

Ich vergess immer mich einzuloggen


----------



## Guest (15. Aug 2004)

Die einfachste Möglichkeit wäre die Schaltplandefinitionen
zu serialisieren.
Es gibt aber auch sogenannte "Embedable" Datenbanken.
z.B. Instant DB etc. 

Schau Dir vielleicht das hier an:
http://pbeans.sourceforge.net


----------



## Achill (15. Aug 2004)

Zitatie einfachste Möglichkeit wäre die Schaltplandefinitionen
           zu serialisieren. 

=> Die Idee ist sogar hervorragend


----------



## Grizzly (15. Aug 2004)

frikkie hat gesagt.:
			
		

> [...]Mit Java an sich bin ich eigentlich recht gut vertraut und hab früher auch schon mal eine kleines DB-Prog unter Delphi geschrieben, aber von JDBC weiß ich halt noch nicht viel.[...]



Hi, unter Delphi kann man ja einfach die BDE als Datenbank bzw. Datenbank-Management-System mitgeben. Dir wird dann einfach mitinstalliert, der Kunde muss nichts machen und man hat eine SQL Datenbank.

Java hat allerdings keine BDE - zumindest nicht beim JRE dabei. Für Java gibt es aber DBMS, die komplett in Java geschrieben sind und deshalb einfach mit Deinem Programm mitgegeben werden können. Die Datenbank starten bzw. fährt hoch, sobald sie über den JDBC Treiber eingebunden wird, und fährt wieder herunter, sobald das Programm beendet bzw. die JDBC Verbindung getrennt wird.
HSQLDB ist eine solche Datenbank. Diese ist im übrigen Open Source und kostenlos verwendbar (Wird bspw. in unserem Unternehmen für ein Kundenprojekt eingesetzt). Aber in nächster Zeit wird auch von IBM eine solche Datenbank - Cloudscape - als Open Source veröffentlicht. Zu beiden Datenbank gibt es im Forum schon etliche Posts. Falls Du interesse hast, stöber einfach mal etwas herum  .

Der Vorteil einer Datenbank liegt auf der Hand: Man kann gegenüber einer XML Datei oder Dateien mit serialisierten Objekten differenzierte Abfragen durchführen. Als Nachteil wäre der größere Entwicklungsaufwand, der mit dem Einbinden einer Datenbank verbunden ist, aufzuführen. Es kommt halt darauf an, was Du machen möchtest  .


----------



## gurumusch (15. Aug 2004)

Was meint Ihr mit serialisieren?  :?:  Ich glaub, ich steh auf dem Schlauch.
Ich glaube aber, dass HSQLDB für mich so ungefähr das Richtige ist. Da gebe ich doch den DB-Server gleich mit der Anwendung mit, oder?


----------



## Achill (15. Aug 2004)

Wenn du in Java Objekte serialisierst kannst sie z.B. in ne Datei schreiben und auch später wieder auslesen, du kannst sie aber auch übers Netzwerk verschicken usw. . Das Objekt in disem Fall wär halt eine Platine


----------



## L-ectron-X (15. Aug 2004)

Bei der Objekt-Serialisierung werden die Werte der Datenfelder eines Objektes, also die Instanzvariablen, in einen Bytestrom überführt, der sich wieder rekonstruieren lässt. Das heißt: alle Datenfelder erhalten bei der Deserialisierung, also dem Einlesen serialisierter Objekte, die Werte zurück, die sie vor der Serialisierung gerade hielten. Instanzvariablen, die nicht serialisiert werden sollen, werden mit _transient_ deklariert.
Objekte, die die Serialisierung unterstützen sollen, müssen das Interface _java.io.Serializable_ implementieren. Bei der Serialisierung von Standard-Datentypen ist das nicht nötig, da die Wrapperklassen das Interface bereits implementieren.


----------



## Guest (17. Aug 2004)

Ich würde für die langfristige Speicherung keine Serialisierung empfehlen, da Sun die Abwärtskompatibilität des derzeitigen Serialisierungsmechanismusses nicht garantiert -> API.


----------



## L-ectron-X (17. Aug 2004)

Dafür gibt eine Möglichkeit um die Kompatibilität sicher zu stellen. Ein finales Datenfeld:

```
private final long serialVersionUID = 123456789;
```


----------



## nollario (18. Aug 2004)

aber was spricht dagegen eine "leichte" datenbank (hypersonic, instant db) mitzuliefern, die keinen installationsaufwand erfordert... halte ich für wesentlich eleganter als serialisierung... wenn die grösse der gespeicherten daten wächst, verliert man bei datei serialisierung sehr schnell an performance....


----------

