PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Кога връзката се затваря при извикване на .close() на JooQ DSLContext, ако изобщо се затваря?

Текущ отговор

Този въпрос стана неактуален с въвеждането на CloseableDSLContext , когато AutoCloseable семантиката беше премахната отново от DSLContext с по-общо предназначение . Несъвместимата промяна беше приложена в jOOQ 3.14, за да се отговори на объркването, изразено в този въпрос и няколко други, вижте:

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

Исторически отговор

DSLContext стана Автоматично затваряне с дистрибуциите на Java 8 на jOOQ 3.7. DSLContext.close() Javadoc на метода обяснява семантиката на този close() обаждане:

Само ресурси, разпределени, когато сте конструирали DSLContext ще бъде издаден. Не ресурси, които сте предали на DSLContext . Във вашия случай не разпределяте никакви ресурси в този try-with-resources оператор, така че няма нищо за освобождаване в края му:

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

Това би било различно, ако сте разпределили нова Връзка точно там:

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

Относно вашите въпроси:

Нищо. Вие трябва сами да управлявате неговия жизнен цикъл, тъй като jOOQ не знае нищо за вашата стратегия за жизнения цикъл на връзката.

Да.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL -- изчисляване на крайни дати от дадена начална дата с произволни прекъсвания

  2. Защо psycopg2 INSERT отнема толкова време, за да работи в цикъл и как да го ускоря?

  3. Слайдове за разговор:Подобрения в разделянето в PostgreSQL 11

  4. Извлечете всички стойности от json в sql таблица

  5. Актуализиране или вмъкване (множество редове и колони) от подзаявка в PostgreSQL