What is the expected behaviour when calling dataSouce.getConnection() for managed transactions in iBATIS 3?
I find suspicious that ResultLoader calls dataSouce.getConnection() at line 89 which could create an unexpected connection. And since managed transaction is used, the connection may never be closed. Christian Here is the code from ResultLoader which calls dataSouce.getConnection() : private Executor newExecutor() throws SQLException { Environment environment = configuration.getEnvironment(); if (environment == null) throw new ExecutorException("ResultLoader could not load lazily. Environment was not configured."); TransactionFactory txFactory = environment.getTransactionFactory(); if (txFactory == null) throw new ExecutorException("ResultLoader could not load lazily. Transaction Factory was not configured."); DataSource ds = environment.getDataSource(); if (ds == null) throw new ExecutorException("ResultLoader could not load lazily. DataSource was not configured."); Connection conn = ds.getConnection(); conn = wrapConnection(conn); Transaction tx = txFactory.newTransaction(conn, false); return configuration.newExecutor(tx, ExecutorType.SIMPLE); }