Zasadniczo mam (pomijając obsługę wyjątków, itp):Czy mogę zamknąć wyciągi transakcji przed zatwierdzeniem w Derby (JDBC)?
connection.setAutoCommit(false);
Statement statement1 = connection.createStatement();
statement1.executeUpdate("...");
statement1.close();
Statement statement2 = connection.createStatement();
statement2.executeUpdate("...");
statement2.close();
connection.commit();
Jeśli dobrze rozumiem, to nie powinno mieć żadnego wpływu, ponieważ wszystko to naprawdę nie jest wolne środki na GC. Especially with Derby: Należy jawnie zamykać wyciągi, zestawy wyników i połączenia, gdy już ich nie potrzebujesz. Połączenia z Derby są zasobami zewnętrznymi względem aplikacji, a moduł czyszczenia pamięci nie zamyka ich automatycznie.
Czy jednak spowoduje to problemy z transakcją? Nie wierzę, że transakcja opiera się na oświadczeniu. Czy ktoś może to potwierdzić?
Wygląda na to, że po zamknięciu instrukcji, _transaction_ jest nadal otwarte po stronie DB (oczekiwanie na zatwierdzenie lub wycofanie). Jest on kończony/zamykany po wydaniu komendy commit lub rollback dla połączenia. Czy mam rację? – ADTC