Programm <> Datenbank wie effizient nutzen?

javalui

Aktives Mitglied
Hallo Leute,

ich habe seit einiger Zeit an einem Programm zum verwalten von Artikeln und Aufträgen etc. gearbeitet. Vor kurzem habe ich das ganze dann nochmal neu gestartet weil ich zuvor alle Daten immer Serialisiert hatte.
Jetzt möchte ich das ganze mit einer Datenbank realisieren.
Mir stellt sich jetzt nur die Frage wie ich das ganze Treiberladen resultset erstellen connection aufbaugedöns in mein Programm so einbaue, dass ich den geringsten aufwand damit habe.

Konkretes Beispiel:
Artikelverwaltung.
Neuanlage eines Artikels
Daten eingeben
Speichern
DB-Satz erstellen.

Wenn ich mich an die Tutorials halte die ich bisher zu Datenbanken gelesen habe müsste ich jetzt jedes mal beim speichern:
Den Treiber laden
die verbindung aufbauen
einen Satz einfügen
und die Verbindungen usw. trennen.

Das ist doch ein mords aufwand und nicht gerade performant oder sehe ich das hier falsch?

Wie wird die Datenbank normalerweise in ein Programm eingebaut?

Konkreter:
Wann bau ich meine Verbindung zur Artikeltabelle auf?
Wann schließe ich die Verbindung?
Lässt sich das ganze so Kapseln, dass ich aus meiner Artikelverwaltung nur ein Classenobjekt erstellen muss das meine geöffnete Tabelle darstellt?

grüße
Javalui
 
Zuletzt bearbeitet:

tfa

Top Contributor
Wenn ich mich an die Tutorials halte die ich bisher zu Datenbanken gelesen habe müsste ich jetzt jedes mal beim speichern:
Den Treiber laden
die verbindung aufbauen
einen Satz einfügen
und die Verbindungen usw. trennen.

Der Treiber muss nur einmal beim DriverManager registriert werden.
Die Datenbankverbindungen holt man sich am besten über einen Connectionpool, der das Öffnen und Schließen der DB-Connections effektiv verwaltet. Von Apache gibt es einen ganz einfachen (DBCP).

Lässt sich das ganze so Kapseln, dass ich aus meiner Artikelverwaltung nur ein Classenobjekt erstellen muss das meine geöffnete Tabelle darstellt?
Das sollte man sogar. Ein Persistenzframework bietet sich hier an. Hibernate ist z.B, eins der bekanntesten. Allerdings ist das sehr komplex, sodass es doch recht aufwendig ist, den Umgang damit zu lernen. Es gibt auch einfachere Produkte. Sicherlich kann man es auch zu Fuß über JDBC und prepared Statements machen - wenn das Datenmodell nicht zu umfangreich ist.
 

javalui

Aktives Mitglied
Ist es Codetechnisch in Ordnung wenn ich beim öffnen meiner Artikelverwaltung die Verbindung zu meiner Artikelliste öffne und dann solange offen behalten, bis ich das Fenster wieder schließe? So, dass quasi immer meine Artikelliste da ist wenn ich änderungen oder Positionierungen vornehmen möchte?
 

turtle

Top Contributor
Ich möchte das noch etwas mit mehr Hintergrundinformationen füllen zu dem was tfa schon richtig gesagt hat.

Deine Applikation sollte den Treiber nur einmal beim DriverManager registrieren. Dieser Schritt ist häufig überhaupt nicht mehr notwendig, weil die Treiber sich sebst registrieren, also kein Class.forName() mehr.

Der korrekte Umgang mit JDBC-Ressourcen ist nicht ganz ohne und deswegen wird sehr häufig mit Frameworks zugegriffen von denen man weiss, dass diese den Umgang richtig machen. Solche Frameworks sind myBATIS, JPA, Hibernate oder andere. Praktisch alle poolen die Verbindung zur Datenbank.

Will sagen, das der Connectionpool Deiner Applikation eine bestimmte Anzahl von Verbindungen zur DB aufbaut und vorrätig hält. Deine Applikation fordert eine Verbindung zur DB an, die dann vom Pool bereits aufgebaut wurde und von Dir genutzt werden kann. Zum Abschluss Deiner DB-Aktion "schliesst" du die Verbindung. Dieser wird dadurch wieder als frei dem Pool zurückgegeben und steht weiteren Aktionen wieder zur Verfügung.

Daher solltest Du in Deiner Applikation Verbindungen aufbauen und schnell wieder schliessen. Das eine Verbindung über GUI-Grenzen offen gehalten wird halte ich für grundfalsch!!! Macht ja auch kein Sinn weil beim nächsten Zugriff über den Pool wieder eine Verbindung angefordert wird.

Es kann beispielsweise passieren, dass für gewisse DB-Operationen Locks auf Tabellen/Zeilenm gehalten werden müssen. Dieses ist aber immens doof, wenn die Applikation nicht richtig weiter arbeiten kann, weil ein Benutzer noch einen DB-Lock hält und dann in die Mittagspause verschwunden ist. Dieses machen auch häufig die DB nicht gerne mit und beenden solche Transaktionen einfach nach einer gewissen Zeit.

Daher sollten DB-Operationen IMMER die Verbindung nach Abschluss wieder an den ConnetionPool zurückgeben.

Wenn Dein Programm endet, wird auch die physikalische Verbindung zur DB über den Pool abgebaut
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Über Internet Datenbank mit Programm abrufen Datenbankprogrammierung 17
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
P MySQL Datenbank aus Programm heraus starten Datenbankprogrammierung 3
H MySQL Programm mit Datenbank anbindung Datenbankprogrammierung 26
W Interaktion Java-Programm <-> Datenbank Datenbankprogrammierung 14
C H2 Datenbank mit Programm starten Datenbankprogrammierung 2
E MySQL Daten in die Datenbank eingeben via Java Programm Datenbankprogrammierung 3
D Werte mit java programm in eine Datenbank einlesen Datenbankprogrammierung 7
G Mit Java-Programm Datenbank löschen/neu anlegen Datenbankprogrammierung 5
M Programm auf dem PC bringen Datenbankprogrammierung 5
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J Brauche Hilfe bei meinem Programm ! Datenbankprogrammierung 12
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
X SQLite SQLite Programm beendet/führt nicht weiter aus Datenbankprogrammierung 12
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
P MySQL Java Programm als Dienst MySQL Dump zurück spielen Datenbankprogrammierung 4
T Derby/JavaDB Zugriff auf DB mit exportiertem Programm Datenbankprogrammierung 12
S MySQL Einfügen in Tabelle nur von Programm zulassen Datenbankprogrammierung 7
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
M Ein mit Netbeans entwickeltes Programm dokumentieren Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
J Mit Java Programm - PostgreSQL backup und restore Datenbankprogrammierung 5
R 1 Programm, 2 Datenbanken Datenbankprogrammierung 15
S Access vom Programm aus starten Datenbankprogrammierung 8
A Java JDBC Programm bringt auf Unix Server Fehlermeldung Datenbankprogrammierung 4
C Programm baut zu viele MySQL Verbindungen auf Datenbankprogrammierung 4
S Postgresql DB - Performancetest - Programm, Logfile etc. Datenbankprogrammierung 2
M vorschläge bzgl. java programm mit datenbankanbindung Datenbankprogrammierung 4
C wie soll ich eine bean in mein programm integriegren? Datenbankprogrammierung 2
B Importieren in MySQL mit Java-Programm Datenbankprogrammierung 2
B Exportieren aus MySQL mit Java-Programm Datenbankprogrammierung 11
P Wie übergebe ich einen NULL Wert in meinem Java-Programm? Datenbankprogrammierung 7
A Programm in Autostart startet bevor DB gestartet ist Datenbankprogrammierung 2
L Programm-Architektur bei DB-Zugriff Datenbankprogrammierung 6
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben