Beim schließen des Programms die verbindung zur DB beenden.

Zakon

Bekanntes Mitglied
Hallo an alle 🙂

Ich verbinde gerade meine H2 Datenbank über Intellij mit Javafx und Scene Builder.

Es funktioniert auch soweit alles nur habe ich das Problem,dass ich die Verbidung zur Datenbank nach jeder Ausführung eines Befehls einmal herstelle und wieder beende. Ich möchte aber, dass sich die Verbidnung nur beendet wenn ich da Programm beende. Habe dazu ShutdownHooks gefunden nur in denen nicht meine Connection benutzen kann weil der Shutodwn Hook ja eine inner Class ist.

Danke im Vorraus für eure Hilfe.
Und bitte erstmal nur einen kurzen Denkanstoß ich möchte da noch ein wenig selber probieren 🙂
 
Wenn dein Prozess beendet wird, dann wird auch die darunterliegende TCP/IP Verbindung zur Datenbank gekappt.
Du brauchst hier also nichts weiter zu tun.
 
Wenn dein Prozess beendet wird, dann wird auch die darunterliegende TCP/IP Verbindung zur Datenbank gekappt.
Du brauchst hier also nichts weiter tun.
Das ist glaube ich nicht so der Fall, da ich das Porblem gestern noch hatte, dass wenn ich keine .close() im code hatte ich irgenwann eine Connection=null Exception bekommen habe weil ich keine Platz mehr hatte um eine Connection aufzubauen 🤔
 
Also was genau ist das Problem, weshalb Du die Connection nicht schließen willst?

Wenn Du die Connection auf hältst, dann musst Du die geöffnete Connection natürlich irgendwo behalten und immer wieder verwenden.

Aber dann bitte darauf achten, dass Du die eine Connection nicht mehrfach aus mehreren Threads heraus nutzt. Ggf. aufpassen, dass da die Connection nicht auf ein Timeout läuft und so ...

Aber da gibt es dann eine tolle Lösung: Connection Pooling. Oft haben das die Treiber selbst mit drin. Das heisst: Du nutzt einfach die Connections wie gehabt und schließt diese. Dabei geht die Connection zurück in den Pool und wird in Wirklichkeit gar nicht geschlossen...

Bei H2 gibt es das auch, aber da muss man es direkt ansprechen: http://www.h2database.com/html/tutorial.html#connection_pool zeigt auch die Nutzung eine Connection Pools.

Aber wie gesagt: Wo ist das Problem, die Verbindung nach Nutzung einfach direkt zu schließen? Warum willst Du das nicht?
 
Also was genau ist das Problem, weshalb Du die Connection nicht schließen willst?

Wenn Du die Connection auf hältst, dann musst Du die geöffnete Connection natürlich irgendwo behalten und immer wieder verwenden.

Aber dann bitte darauf achten, dass Du die eine Connection nicht mehrfach aus mehreren Threads heraus nutzt. Ggf. aufpassen, dass da die Connection nicht auf ein Timeout läuft und so ...

Aber da gibt es dann eine tolle Lösung: Connection Pooling. Oft haben das die Treiber selbst mit drin. Das heisst: Du nutzt einfach die Connections wie gehabt und schließt diese. Dabei geht die Connection zurück in den Pool und wird in Wirklichkeit gar nicht geschlossen...

Bei H2 gibt es das auch, aber da muss man es direkt ansprechen: http://www.h2database.com/html/tutorial.html#connection_pool zeigt auch die Nutzung eine Connection Pools.

Aber wie gesagt: Wo ist das Problem, die Verbindung nach Nutzung einfach direkt zu schließen? Warum willst Du das nicht?
Habe gelesen das es diese beiden Möglichkeiten gibt und wolllte das ganze einfach mal ausprobieren. Hat sich für mich logischer angehört wenn man dann mal irgendwann viele Leute und große daten hat 🤔
 

Zurück
Oben