2015-06-12 21 views
5

Tôi đã đọc logic truy cập cơ sở dữ liệu của mình và thấy rằng có thể kết nối giống nhau được đóng hai lần liên tiếp.Điều gì sẽ xảy ra nếu bạn đóng một kết nối đã đóng?

Khác với hướng dẫn trùng lặp, có bất kỳ lý do nào mà tôi nên quan tâm về việc đóng kết nối sau khi đã đóng kết nối không?

+0

Không, không có, giả sử nhà cung cấp trình điều khiển đã thực hiện tốt công việc triển khai phương pháp này. Trong trường hợp sử dụng một hồ bơi kết nối cơ sở dữ liệu, nó chỉ đơn giản là không có gì. –

+0

Thông thường các phương pháp đóng sẽ xử lý đúng cách nếu nó đã bị đóng. Nhưng nó thực sự phụ thuộc vào những gì bạn đang thực sự sử dụng. Nó có thể hiểu được cho một số việc thực hiện có hành vi kỳ lạ mặc dù rất khó xảy ra –

Trả lời

4

Nếu bạn đang sử dụng java.sql.Connection, bạn sẽ không có vấn đề gì.

Từ Connection documentation:

gọi method đóng cửa trên một đối tượng Connection đó là đã đóng là một không-op.

tức là không có gì.

Điều này phải phù hợp với mọi triển khai phù hợp. Mặc dù có thể hiểu được một số việc thực hiện có hành vi kỳ lạ về vấn đề này.

+0

* Điều này phải phù hợp với mọi triển khai phù hợp * nhưng có thể không phải là trường hợp ... –

+0

@LuiggiMendoza true. Làm rõ nó –

1

Từ các tài liệu: cơ sở dữ liệu

chí này kết nối của đối tượng và các nguồn lực JDBC ngay lập tức thay vì chờ đợi cho họ để được tự động giải phóng. Gọi phương thức đóng trên đối tượng Kết nối đã đóng là không có. Chúng tôi đặc biệt khuyên rằng một ứng dụng rõ ràng là cam kết hoặc quay lại một giao dịch hoạt động trước khi gọi phương thức gần. Nếu phương thức đóng được gọi và có một giao dịch đang hoạt động, kết quả sẽ được xác định thực hiện.

Vì vậy, trong ngắn hạn, nó là nghĩa vụ phải làm gì. Lưu ý rằng mặc dù việc triển khai một cách cẩu thả cho giao diện Connection này có thể không đáp ứng các quy tắc được xác định trong hợp đồng của giao diện này. Bạn không nói bạn đang sử dụng cơ sở dữ liệu nào nên tôi không thể cung cấp thêm thông tin về chi tiết triển khai.

Các vấn đề liên quan