java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java-Forum FAQs > FAQ - Übersicht > Java-FAQ Beiträge > Datenbanken

Antwort
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.08.2011, 08:38   #1 (permalink)
Stammbenutzer
Floppy Disc
 
Benutzerbild von Guybrush Threepwood
 
Registriert seit: 19.05.2009
Fachbeiträge: 762
Abgegebene Danke: 52
Erhielt 87 Danke für 70 Beiträge
Standard Eingebettete Datenbanken

Eingebettete Datenbanken - Embedded Database

Datenbanksysteme bieten zahreiche Vorteile, wenn es um die Organisation großer Datenmengen geht. Es existieren viele Systeme, die als Datenbankserver laufen. In diesem Fall kommuniziert der Client mit dem Server um Daten abzufragen oder zu speichern. Eine Reihe an Projekten ermöglicht es dagegen auch, eine Datenbank direkt in ein Programm einzubetten. In der Regel ist es hierfür lediglich notwendig, die entsprechende Bibliothek dem Klassenpfad hinzuzufügen.

Eine Auswahl an Datenbanksystemen für den Einsatz als Embedded Database (alle in Java geschrieben und unter Apache-, MPL-, LGPL- oder BSD-Lizenz oder einer vergleichbaren Lizenz einsetzbar; auch für kommerzielle closed-source Projekte geeignet):

H2 Database Engine
+ Schnelle Datenbank mit kleinem Footprint
+ Lässt sich auch im Servermodus, oder als In-Memory-DB betreiben
+ Sehr rege Weiterentwicklung
+ Datenbank-Dateien werden in einer einzelnen Datei abgelegt; hierdurch leichte Sicherung und Weitergabe möglich
+ Integrierte Volltextsuche
+ Verschlüsselungsmöglichkeiten
+ Backup-Tools
HSQLDB
+ kleine und sehr schnelle Datenbank für kleine bis mittlere Datenbanken
+ etabliertes Projekt, das bereits seit über 10 Jahren entwickelt wird
+ Verschlüsselungsmöglichkeiten
+ Backup-Tools
+ kommerzieller Support verfügbar
Apache Derby
+ bereits Teil des JDK
+ gehostet bei Apache -> große Community; Weiterentwicklung gewährleistet
- deutlich langsamerer Start als H2 oder HSQLDB
Oracle Berkeley DB 11g
Keine persönliche Erfahrung / Keine Bewertung möglich

Mckoi SQL Database
Keine persönliche Erfahrung / Keine Bewertung möglich

Daffodil DB - One$DB
Keine persönliche Erfahrung / Keine Bewertung möglich

Für die meisten Anwendungszwecke ist sicher H2, HSQLDB oder Derby eine sehr gute Wahl. Neben den hier dargestellten Datenbanksystemen gibt es darüber hinaus weitere, wie z. B. SQLite, die nicht in Java geschrieben sind, aber trotzdem aus einer Java-Anwendung heraus verwendet werden können. Weitere Infos und Bewertungen siehe z. B.

Eingebettete Datenbank am Beispiel von H2

Zunächst muss die zugehörige Jar-Datei dem Classpath hinzugefügt werden (h2-x.x.x.jar). Diese kann unter H2 - Downloads geladen werden.

Das folgende Beispiel baut eine Verbindung zu einer eingebetteten H2-Datenbank auf, die im Benutzerverzeichnis abgelegt ist. Falls keine Datenbank vorhanden ist, wird diese beim ersten Verbindungsaufbau angelegt. Liegt am angegebenen Ort dagegen eine Datei mit dem Namen "myDatabase.h2.db", so wird diese automatisch eingebunden.

Die Datenbank ist AES-verschlüsselt. Bitte denken Sie daran, dass Passwörter und Benutzernamen nicht im Code gespeichert werden sollten.
Hier im Beispiel ist dies nur zur Verdeutlichung so gemacht. Der Code legt eine einfache Tabelle 'PERSON' an, sofern diese noch nicht existiert. Die Tabelle verfügt über die Felder ID, Vorname und Nachname, sowie ein Änderungsdatum (long, z. B. System.currentTimeMillis()). Das letzte Feld vom Typ OTHER dient in diesem Beispiel der Serialisierung eines Objekts. Kein Feld darf leer sein (= 'NOT NULL'). Informationen, über die in H2 verfügbaren Datentypen gibt es unter H2 - Data Types.

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Connection con;
 
try {
  //Benutzerspezifische Einstellungen
  String userDir = System.getProperty("user.home");
  String databaseName = "myDatabase";
  String userName = "user";
  String userPswd = "userpswd";
  String filePswd = "filepswd";
  
  //Datenbanktreiber initialisieren
  Class.forName("org.h2.Driver").newInstance();
  
  //URL fuer Datenbank zusammenbauen und Verbindung oeffnen
  String databaseUrl = "jdbc:h2:" + userDir + File.separator
          + databaseName + ";CIPHER=AES";
  
  con = DriverManager.getConnection(databaseUrl, userName,
          filePswd + " " + userPswd);
  
  //Erstelle eine Tabelle 'PERSON', sofern noch keine existiert
  Statement personTable = con.createStatement();
  personTable.execute("
          CREATE TABLE IF NOT EXISTS PERSON(
          PERSONID IDENTITY PRIMARY KEY, 
          FORENAME VARCHAR(50) NOT NULL, 
          FAMILYNAME VARCHAR(50) NOT NULL, 
          MODIFICATION BIGINT NOT NULL, 
          MYOBJECT OTHER NOT NULL)
  ");
  personTable.close();
  
} 
catch (InstantiationException e1) {
  e1.printStackTrace();
} 
catch (IllegalAccessException e1) {
  e1.printStackTrace();
} 
catch (ClassNotFoundException e1) {
  e1.printStackTrace();
} 
catch (SQLException e1) {
  e1.printStackTrace();
}

Nach dem Durchlaufen des Programms wird unter user.home eine Datenbankdatei mit der Bezeichnung myDatabase.h2.db zu finden sein.

Geändert von L-ectron-X (25.06.2012 um 23:02 Uhr) Grund: Code formatiert
Guybrush Threepwood ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagen:
Cosmicbrain (29.01.2013), Helgon (07.10.2012), Plopp (20.12.2011)
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Relationale Datenbanken vs. objektorientierte Datenbanken DennisXX Plauderecke 4 20.07.2011 15:59
(MySQL) Datenbanken auslesen Wanze Datenbankprogrammierung 3 03.08.2010 20:10
Datenbanken synchronisieren me82 Datenbankprogrammierung 2 02.09.2008 19:16
Datenbanken mit MySQL einrichten ich² Datenbankprogrammierung 11 09.11.2005 09:45
Abfrage über zwei Datenbanken netty Datenbankprogrammierung 9 23.05.2005 12:42


Lesezeichen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de