[WIE?] JDBC + MySQL Datenbankverbindung aufrecht erhalten

gamp

Mitglied
Hallo!

Ich habe ein Problem. Ich will nicht für jedes Querry ein neues Klassenobjekt DatabaseManipulator() erstellen, das auf die Datenbank connecten und dann ein Query ausführen, da Queries zu bestimmten Tageszeiten dann ziemlich oft auftreten würden (Wenn viele Nutzer gerade in einem IRC Chat-Channel sind, da bei jedem PRIVMSG ein Query an die Datenbank gesendet wird) und somit auch viele Klassenobjekte in kurzer Zeit erstellt werden würden, funktioniert zwar, find ich aber nicht schick und schlägt sich auf die CPU.

Also hab ich mir gedacht, 'Biste schlau, erstellste das Klassenobjekt nur einmal, baust damit eine Connection zur Datenbank auf, sendest alle Query-Anfragen über die gleiche "Connection con;"'

War dann doch nicht so schlau, irgendwie kommt es nach spätestens einer Stunde (Da es auch mal vorkommen kann das ziemlich lange KEINE Query-Anfragen an die Datenbank geschickt werden, wenn zB. in der Nacht die meisten Chat-Nutzer schlafen sind) dann zu einem Connection-Abbruch, also einem PING TIMOUT oder was auch immer das in diesem Fall ist.

Gibt es einen Trick oder eine Methode/Möglichkeit die Verbindung zur Datenbank möglichst lange (KEEP_ALIVE ö.Ä.) offen zu halten? Derzeit hab ich eine IF-Abfrage im Thread, wenn die Connection abgebrochen ist baut er eine neue auf. Fänds aber schöner wenn die garnicht bis selten abreissen würde!

Gruß gampey
 
Hi,

eine Möglichkeit, mit der man relativ einfach das Leben leicht gemacht bekommt, ist das Connectionmanagement in die Hände des Spring-Framework zu legen.

Das ist schnell konfiguriert und Spring liefert Dir immer eine heile Datenbankverbindung zurück.... Spring kann natürlich noch viel mehr, aber das ist wirklich schnell gemacht.


Grüße
gore
 
Howdie.

Wie gorefest schon gesagt hat - das Spring Framework nimmt dir in der Regel solche Aufgaben und Überlegungen ab.
Falls du dein Design bzw. deinen Code aber beibehalten möchtest, wäre eine Art Heartbeat eine Möglichkeit. Falls länger keine Query gesendet wurde, schick zyklisch "Ping"-Queries an die DB, dann gibts keinen Timeout und du kannst gleichzeitig überprüfen, ob die Connection noch am Leben ist.
Aber die Empfehlung ist ganz klar Spring!

Gruß und viel Erfolg
miffi
 
Zurück