Derby/JavaDB Client-Server-Architektur mit Datenbank

bene2808

Aktives Mitglied
Hallo Forum,

ich bin an einem Projekt dran, bei dem sich mehrere Clients mit einem Server verbinden und Daten austauschen können. Da sehr viele Daten auftreten werden, soll der Server sowieso eine Datenbank verwenden. Der Client soll aber alle Daten die er schon einmal nachgefragt hat, selbst speichern, damit er ggf. auch ohne eine Verbindung zum Server arbeiten kann. Die Daten sind dann vielleicht nicht immer up to date, aber in diesem Projekt trotzdem absolut benutzbar.

Ich kenne die Grundlagen von relationalen Datenbanken, SQL; am Aufsetzen von Datenbanken und Verbinden über Java bin ich aber erst seit kurzem dran. Auf jeden Fall dürfen die Datenbanken von Clients und Server nicht komplett synchronisiert werden, weil der Server natürlich einige Details kennt, die der Client nicht wissen darf.

Eine Client-Server-Architektur mit java.net habe ich bereits aufgestellt (oder geht es für dieses Projekt auch einfacher?o_O). Jetzt hänge ich im Moment an der Datenbank fest. Natürlich sollten die Datenbanken von Java aus komplett automatisch installiert werden können, da sie ja auch für die Clients gebraucht werden; hier bin ich auf Java DB (oder heißt das Oracle DB???) gestoßen, in einem Codebeispiel hat dieses automatische Erstellen auch ganz gut geklappt (gibt es trotzdem Alternativen?o_O). Jetzt müsste ich eigentlich direkt über JDBC zugreifen (oder nicht?), aber das ist etwas unpraktisch. Ich habe aber vor Laaangem mal mit JPA gearbeitet und das war doch um einiges "platzsparender". Aber wie bringe ich jetzt JPA mit Java DB zusammen? Ich habe es zuerst mit der Glassfish-Implementierung versucht (Alternativen: Vor- und Nachteile?).

Nach langen Recherchen, als ich es endlich geschafft hatte, die persistence.xml richtig zu platzieren, wird aber immer noch der Treiber bei entityManagerFactory.createEntityManager() nicht gefunden. Vermutlich brauche ich sowieso einen anderen um mit Derby, Java DB oder was auch immer zu kommunizieren.o_O

Mal wieder freue ich mich über jeden Hinweis :D:)
 

mrBrown

Super-Moderator
Mitarbeiter
Wie sollen Client und Server denn kommunizieren? Über http (und Daten dann z als JSON) oder über Sockets und Binärdaten?
Wenn ersteres würde ich 'n FrameWork wie zB Spring Boot nutzen, damit lässt sich das recht leicht umsetzten, uns JPA ist direkt dabei (und ziemlich leicht zu benutzen). Komme aber drauf an, was genau gemacht werden soll...
 

bene2808

Aktives Mitglied
Wow, schnelle Antwort:)

Also... http ist doch vor allem zum Versenden von Dateien. Bei mir handelt es sich aber oft um recht kleine Datensätze (teilweise vmtl. nicht mal ein Kilobyte), die auch nicht in Form von Dateien vorliegen. Und JSON ist zwar für das Übertragen von Objekten, sendet den Inhalt aber zeichenweise oder? Klingt für mich auch relativ verschwenderisch. Da würde ich dann schon lieber die direkte binäre Variante mit Sockets nehmen, und etwas mehr Aufwand in Kauf nehmen. Die habe ich ja auch schon implementiert.

Aber wie kriege ich das jetzt mit der Datenbank zusammen?:confused:o_O
 

mrBrown

Super-Moderator
Mitarbeiter
Also... http ist doch vor allem zum Versenden von Dateien. Bei mir handelt es sich aber oft um recht kleine Datensätze (teilweise vmtl. nicht mal ein Kilobyte), die auch nicht in Form von Dateien vorliegen. Und JSON ist zwar für das Übertragen von Objekten, sendet den Inhalt aber zeichenweise oder? Klingt für mich auch relativ verschwenderisch. Da würde ich dann schon lieber die direkte binäre Variante mit Sockets nehmen, und etwas mehr Aufwand in Kauf nehmen. Die habe ich ja auch schon implementiert.

Wenn es schon implementiert ist, lohnt sich der Umstieg wahrscheinlich nicht...

In den meisten Fällen ist aber der Aufwand beim Umsetzen das wesentliche, und RESTful-Services gibts halt schon "fertig" als Framework (mit Datenbank, Server, Mapping von Daten in für den Client passende Repräsentation, etc).
"Verschwenderisch" ist es zwar, in den meisten Fällen ists aber völlig unerheblich, grad wenns nur Recht kleine Datensätze sind. Mit JSON lassen sich halt Objekte leicht abbilden (auch relationale Tabellen ;)), und sind dann auch Menschen-Lesbar. Ob's Dateien sind oder nicht ist unerheblich, es ist einfach nur eine textuelle Darstellung der Daten, die kann man natürlich auch in Latein speichern, muss man aber nicht.

Aber wie kriege ich das jetzt mit der Datenbank zusammen?:confused:o_O
Damit können dir vermutlich andere besser helfen...
 

bene2808

Aktives Mitglied
Ok dankeschön erstmal:D. Werde mir JSON und die Frameworks einfach mal genauer anschauen und versuchen, sie in eine Implementierung der Client-Server-Datenbank-Struktur einzubauen. Und falls die Kommunikation doch zu langsam wird, kann ich ja notfalls auch noch umsteigen.:cool:

Jetzt aber noch mal ein bisschen genauer zu JPA:

Code:
try {
            // Der Teil, der Java DB initialisieren soll
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            Connection connection = DriverManager.getConnection("jdbc:derby:DBTest;create=true");
            // Der Teil, der für JPA zuständig sein soll
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("QuickStart");
            EntityManager manager = factory.createEntityManager();
} catch (Exception ex) {
            ex.printStackTrace();
}

Leider tritt in der letzten Zeile im try-Block folgender Fehler auf::confused:

Code:
[TopLink Info]: 2016.07.31 03:50:55.185--ServerSession(1371006431)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Local Exception Stack:
Exception [TOPLINK-4003] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Exception Description: Configuration error.  Class [sun.jdbc.odbc.JdbcOdbcDriver] not found.
    at oracle.toplink.essentials.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:101)
    at oracle.toplink.essentials.sessions.DefaultConnector.loadDriver(DefaultConnector.java:183)
    at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:184)
    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:280)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:229)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91)
    at startup.DBTest.main(DBTest.java:35)

Er sucht den JdbcOdbc-Treiber, aber brauche ich den für eine Verbindung zu einer Java DB-Datenbank überhaupt? Ich dachte der in der ersten Zeile des try-Blocks geladene Treiber wäre der richtige... Aber wie weise ich ihn jetzt an, den zu benutzen?o_O
 

bene2808

Aktives Mitglied
Hey die Bibliothek scheint echt cool zu sein:).

Aber Datenbank-Zugriff ist da nicht dabei, oder?:confused:

Ich bin totaler Anfänger mit Datenbanken... Hier muss doch irgendwer wissen, wie ich eine Java DB Datenbank über JPA anspreche...:eek::rolleyes:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D MySQL Client - Server: Client verabschiedet sich sobald ich Variablen im SQL Statement verwende Datenbankprogrammierung 9
A Client-Server anwendung sofort aktualisieren Datenbankprogrammierung 7
sparrow Hibernate in non-EE Server/Client-App (Topic geändert) Datenbankprogrammierung 10
G update sperren bei client/server anwendung Datenbankprogrammierung 7
T JDBC und Client/Server Datenbankprogrammierung 12
S SQLite oder RDBMS als Datei(nicht Client/Server) Datenbankprogrammierung 5
D Datenbank zugriff über Client/Server Datenbankprogrammierung 4
L Oracle SQL Inserts via Client vs SQL Datei via ScriptRunner Datenbankprogrammierung 6
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
L H2 Blob Spalte im Client anzeigen Datenbankprogrammierung 2
J Daten synchronisieren in Multi-Client-Anwendungen (Hibernate) Datenbankprogrammierung 6
P Lokaler Java Client auf online Datenbank zugreifen Datenbankprogrammierung 2
R Einfache JDBC-Datenbank mit Admin-Client Datenbankprogrammierung 4
G client <> db anwendung - zugangsdaten? Datenbankprogrammierung 3
G [Hibernate] Hibernate in Desktop Client Datenbankprogrammierung 3
O Oracle Client Software für ojdbc5! Datenbankprogrammierung 1
A MySQL+Webserver --(Java-Applet)----> Client Datenbankprogrammierung 11
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D Oracle Gateway oder Relay-Server Datenbankprogrammierung 5
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Verbindung zum SQL-Server Datenbankprogrammierung 27
J Datenbank VPS Server Datenbankprogrammierung 3
L Oracle Daten von einem Server zum andere kopieren Datenbankprogrammierung 24
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
V HSQLDB detached entity passed to persist: server.Employee Datenbankprogrammierung 4
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
C Derby auf Server Datenbankprogrammierung 6
ruutaiokwu sql server t-sql: try/catch bei ALTER TABLE ? Datenbankprogrammierung 4
ruutaiokwu sql server 2008 stored procedures automatisiert vergleichen Datenbankprogrammierung 2
ruutaiokwu sql server constraints priorität? Datenbankprogrammierung 3
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
W MySQL -Server Einstellung -- Zugriff übers lokale Netzwerk Datenbankprogrammierung 1
cover1012 Derby/JavaDB Verbindung mit FTP-Server Datenbankprogrammierung 13
N MySQL Datenbank-Server in *.jar packen? Datenbankprogrammierung 6
L Mit Java Desktop Anwendung auf Mysql Server auf Webspace verbinden Datenbankprogrammierung 11
F h2 als server Datenbankprogrammierung 3
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
S MySQL Server Informationen abfragen Datenbankprogrammierung 6
F MSSQL-Server Verbindung Datenbankprogrammierung 5
DStrohma MS SQL Server 2005 + Java: Immer nur eine aktive Verbindung erlaubt? Datenbankprogrammierung 5
A MS Sql Server 2008 - Verbindungsproblem Datenbankprogrammierung 3
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
J Oracle oder SQL-Server Datenbankprogrammierung 18
J Server Datenbankprogrammierung 3
C SQL Server Treiber [DBNETLIB] Datenbankprogrammierung 14
T Hsqldb: java.lang.NoClassDefFoundError: org/hsqldb/Server Datenbankprogrammierung 2
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
W Problem bei Insert mit JDBC auf MS-SQL-Server 2005 Datenbankprogrammierung 7
0x7F800000 MS-SQL Server 2008 Wie benutzt man da NATURAL JOIN / INNER JOIN USING? Datenbankprogrammierung 3
M Problem mit ResultSet bei SQL Server 2005 Datenbankprogrammierung 6
D Bean: server internal error Datenbankprogrammierung 5
Landei MsSql Express Server 2008 Datenbankprogrammierung 8
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
M [gelöst] Problem mit SQL Server. Statements... Datenbankprogrammierung 4
A Java JDBC Programm bringt auf Unix Server Fehlermeldung Datenbankprogrammierung 4
K JDBC MS SQL SERVER Datenbankprogrammierung 6
J MS sql Server 2005 Treiber Datenbankprogrammierung 9
G jdbc grundlegende verbindung zu sql server geht nicht Datenbankprogrammierung 9
thE_29 Byte auslesen mit MS SQL Server Datenbankprogrammierung 4
G Suchen von Zahlen in einem Textfeld / SQL Server Datenbankprogrammierung 1
G SQL Server Connection Datenbankprogrammierung 12
G Access Zugriff, DB auf Server, Applet Datenbankprogrammierung 4
R Unknown initial character set index . received from server Datenbankprogrammierung 5
M HSQLDB Server Problem Datenbankprogrammierung 2
K INSERT INTO bei Windows 2005 SQL Server Standard Edition . Datenbankprogrammierung 2
F Zwischen Datenbanken wählen auf SQL-Server Datenbankprogrammierung 4
G Insert in MS SQL Server Db funktioniert nicht richtig Datenbankprogrammierung 16
G Datenbank ohne Server Datenbankprogrammierung 28
G DB-Server schmiert ab Datenbankprogrammierung 6
D Datenbankzugriff auf MS SQL Server 2000 funktioniert nicht Datenbankprogrammierung 3
J Hibernate + Spring + SQL Server => Performanceprobleme :( Datenbankprogrammierung 4
G JDBC Verbindung zu MySQL-Server auf lokalem Rechner Datenbankprogrammierung 5
O Datenbankzugriff "ohne" Server ? Datenbankprogrammierung 9
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
thE_29 Microsoft SQL Server 2000 Datenbankprogrammierung 2
A DTS Export/Import MS-SQL Server 2000 Datenbankprogrammierung 3
A help me !(entitybean + sql server) Datenbankprogrammierung 2
R Invalid parameter bindings bei MS SQL Server Datenbankprogrammierung 2
G Fehlermeldung beim Zugriff auf SQL-Server-DB Datenbankprogrammierung 3
R JAVA-Prog auf Datenbank-Server zugreifen Datenbankprogrammierung 3
R Mongodb tree Architektur Datenbankprogrammierung 6
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
X PostgreSQL Hibernate geschickte Architektur Datenbankprogrammierung 2
L Programm-Architektur bei DB-Zugriff Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben