Về cơ bản tôi đã (bỏ qua xử lý ngoại lệ, vv):Tôi có thể đóng các câu lệnh trong một giao dịch trước khi thực hiện nó trong Derby (JDBC) không?
connection.setAutoCommit(false);
Statement statement1 = connection.createStatement();
statement1.executeUpdate("...");
statement1.close();
Statement statement2 = connection.createStatement();
statement2.executeUpdate("...");
statement2.close();
connection.commit();
Nếu tôi hiểu đúng nó không nên có bất kỳ tác động bởi vì tất cả nó thực sự là miễn phí các nguồn lực cho GC. Especially with Derby: Bạn nên đóng rõ ràng Câu lệnh, Kết quả và Kết nối khi bạn không cần đến chúng nữa. Các kết nối đến Derby là các tài nguyên bên ngoài một ứng dụng và trình thu gom rác sẽ không tự động đóng chúng.
Tuy nhiên điều này có gây ra bất kỳ sự cố nào với giao dịch không? Tôi không tin giao dịch dựa trên Bảng sao kê. Bất cứ ai có thể vui lòng xác nhận điều này?
Dường như, nếu bạn đóng một Tuyên bố, _transaction_ vẫn đang mở ở phía DB (chờ cam kết hoặc khôi phục). Nó chỉ kết thúc/đóng khi một lệnh cam kết hoặc rollback được cấp cho kết nối. Tôi có đúng không? – ADTC