Z dokumentacji Oracle JDBC:
Po utworzeniu połączenie jest w trybie automatycznego zatwierdzania. Oznacza to, że każda pojedyncza instrukcja SQL jest traktowana jako transakcja i jest automatycznie zatwierdzana zaraz po jej wykonaniu. (Aby być bardziej precyzyjnym, domyślnie instrukcja SQL jest zatwierdzana po jej zakończeniu, a nie po wykonaniu. Instrukcja jest zakończona, gdy wszystkie jej zestawy wyników i liczniki aktualizacji zostały pobrane . Jednak w prawie wszystkich przypadkach instrukcja jest zakończona, a zatem zatwierdzona, zaraz po jej wykonaniu).
Inną rzeczą jest - pominąłeś szczegóły tworzenia połączenia, więc tylko zgaduję - jeśli używasz niektórych frameworków lub uzyskujesz połączenie ze źródła danych lub puli połączeń, autocommit
może być off
przez te frameworki/pule/źródła danych - rozwiązaniem jest nigdy nie ufać domyślnym ustawieniom;-)