diff --git a/jOOQ/src/main/java/org/jooq/impl/LoaderImpl.java b/jOOQ/src/main/java/org/jooq/impl/LoaderImpl.java index d7486c54d1..8915e6c12b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LoaderImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/LoaderImpl.java @@ -49,6 +49,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; +import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; @@ -547,7 +548,7 @@ class LoaderImpl> implements if (commit == COMMIT_AFTER) { if ((processed % batchAfter == 0) && ((processed / batchAfter) % commitAfter == 0)) { - configuration.connectionProvider().acquire().commit(); + commit(); } } } @@ -592,17 +593,17 @@ class LoaderImpl> implements if (commit == COMMIT_ALL) { if (!errors.isEmpty()) { stored = 0; - configuration.connectionProvider().acquire().rollback(); + rollback(); } else { - configuration.connectionProvider().acquire().commit(); + commit(); } } // Commit remaining elements in COMMIT_AFTER mode else if (commit == COMMIT_AFTER) { if ((processed % batchAfter != 0) || ((processed / batchAfter) % commitAfter != 0)) { - configuration.connectionProvider().acquire().commit(); + commit(); } } } @@ -611,6 +612,28 @@ class LoaderImpl> implements } } + private void commit() throws SQLException { + Connection connection = configuration.connectionProvider().acquire(); + + try { + connection.commit(); + } + finally { + configuration.connectionProvider().release(connection); + } + } + + private void rollback() throws SQLException { + Connection connection = configuration.connectionProvider().acquire(); + + try { + connection.rollback(); + } + finally { + configuration.connectionProvider().release(connection); + } + } + /** * Type-safety... */