PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wann wird eine Connection beim Aufruf von JooQ DSLContext's .close() geschlossen, wenn überhaupt?

Aktuelle Antwort

Diese Frage wurde mit der Einführung des Codes CloseableDSLContext , wenn die AutoCloseable Semantik wurde wieder aus dem allgemeineren DSLContext entfernt . Die inkompatible Änderung wurde in jOOQ 3.14 implementiert, um die in dieser Frage und einigen anderen ausgedrückte Verwirrung zu beseitigen, siehe:

https://github.com/jOOQ/jOOQ/issues/10512

Historische Antwort

DSLContext wurde AutoCloseable mit den Java-8-Distributionen von jOOQ 3.7. Der DSLContext.close() Javadoc der Methode erklärt die Semantik dieses close() Aufruf:

Nur Ressourcen, die beim Erstellen des DSLContext zugewiesen wurden wird veröffentlicht. Keine Ressourcen, die Sie an DSLContext übergeben haben . In Ihrem Fall weisen Sie in diesem try-with-resources keine Ressourcen zu -Anweisung, sodass am Ende nichts veröffentlicht werden muss:

try (DSLContext context = DSL.using(configuration); ...) { ... }

Dies wäre anders, wenn Sie eine neue Verbindung zuweisen würden genau dort:

try (DSLContext context = DSL.using("jdbc:h2:~/test", "sa", ""); ...) { ... }

Zu Ihren Fragen:

Nichts. Sie müssen den Lebenszyklus selbst steuern, da jOOQ nichts über Ihre Verbindungslebenszyklusstrategie weiß.

Ja.