PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Quando viene chiusa una connessione quando si chiama .close() di JooQ DSLContext, se non del tutto?

Risposta attuale

Questa domanda è diventata obsoleta con l'introduzione di CloseableDSLContext , quando AutoCloseable la semantica è stata rimossa di nuovo dal più generico DSLContext . La modifica incompatibile è stata implementata in jOOQ 3.14, al fine di affrontare la confusione espressa in questa domanda e in poche altre, vedi:

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

Risposta storica

DSLContext è diventato AutoCloseable con le distribuzioni Java 8 di jOOQ 3.7. Il DSLContext.close() il Javadoc del metodo spiega la semantica di questo close() chiama:

Solo le risorse allocate quando hai costruito il DSLContext sarà rilasciato. Non risorse che hai passato a DSLContext . Nel tuo caso, non stai allocando alcuna risorsa in questo try-with-resources dichiarazione, quindi non c'è nulla da rilasciare alla fine:

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

Sarebbe diverso se assegnassi una nuova Connection proprio lì:

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

Riguardo alle tue domande:

Niente. Devi governarne tu stesso il ciclo di vita poiché jOOQ non sa nulla della tua strategia del ciclo di vita della connessione.

Sì.