PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Kiedy połączenie jest zamykane podczas wywoływania funkcji .close() JooQ DSLContext, jeśli w ogóle?

Aktualna odpowiedź

To pytanie stało się nieaktualne po wprowadzeniu kodu <>CloseableDSLContext , gdy AutoCloseable semantyka została ponownie usunięta z bardziej ogólnego zastosowania DSLContext . Niezgodna zmiana została zaimplementowana w jOOQ 3.14, aby rozwiązać zamieszanie wyrażone w tym pytaniu i kilku innych, patrz:

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

Historyczna odpowiedź

DSLContext stał się AutoCloseable z dystrybucjami Java 8 jOOQ 3.7. DSLContext.close() Javadoc metody wyjaśnia semantykę tego close() zadzwoń:

Tylko zasoby przydzielone podczas tworzenia DSLContext zostanie opublikowane. Nie zasoby, które przekazałeś do DSLContext . W twoim przypadku nie przydzielasz żadnych zasobów w tym try-with-resources oświadczenie, więc na końcu nie ma nic do wydania:

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

Byłoby inaczej, gdybyś przydzielił nowe Połączenie właśnie tam:

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

Jeśli chodzi o Twoje pytania:

Nic. Musisz samodzielnie zarządzać jego cyklem życia, ponieważ jOOQ nie wie nic o Twojej strategii cyklu życia połączenia.

Tak.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczne przekazywanie nazw kolumn dla zmiennej rekordu w PostgreSQL

  2. Postgres SELECT gdzie WHERE jest UUID lub ciągiem

  3. Konfigurowanie Django z obsługą GeoDjango w AWS Beanstalk lub EC2 Instance

  4. Jak zaimportować plik CSV do postgresql, który ma już przypisany identyfikator?

  5. agregat pustego zbioru wyników