Câu trả lời hiện tại
Câu hỏi này đã trở nên lỗi thời với sự ra đời của ClosableDSLContext
, khi AutoClosable
ngữ nghĩa lại bị xóa khỏi DSLContext
có mục đích chung hơn . Thay đổi không tương thích đã được triển khai trong jOOQ 3.14, để giải quyết sự nhầm lẫn được thể hiện trong câu hỏi này và một số câu hỏi khác, hãy xem:
https://github.com/jOOQ/jOOQ/issues/10512
Câu trả lời lịch sử
DSLContext
đã trở thành AutoClosable
với các bản phân phối Java 8 của jOOQ 3.7. DSLContext.close ()
Javadoc của method giải thích ngữ nghĩa của close ()
này gọi:
Chỉ tài nguyên được phân bổ khi bạn xây dựng DSLContext
sẽ được phát hành. Không phải tài nguyên mà bạn đã chuyển cho DSLContext
. Trong trường hợp của bạn, bạn không phân bổ bất kỳ tài nguyên nào trong try-with-resources
này nên không có gì được phát hành ở cuối nó:
try (DSLContext context = DSL.using(configuration); ...) { ... }
Điều này sẽ khác nếu bạn cấp phát một Kết nối
mới ngay tại đó:
try (DSLContext context = DSL.using("jdbc:h2:~/test", "sa", ""); ...) { ... }
Về câu hỏi của bạn:
Không. Bạn phải tự mình kiểm soát vòng đời của nó vì jOOQ không biết gì về chiến lược vòng đời kết nối của bạn.
Có.