diff --git a/src/main/java/com/avaje/ebeaninternal/api/SpiEbeanServer.java b/src/main/java/com/avaje/ebeaninternal/api/SpiEbeanServer.java index 5cbea7a2e..3735feaea 100644 --- a/src/main/java/com/avaje/ebeaninternal/api/SpiEbeanServer.java +++ b/src/main/java/com/avaje/ebeaninternal/api/SpiEbeanServer.java @@ -1,8 +1,10 @@ package com.avaje.ebeaninternal.api; -import java.util.List; - -import com.avaje.ebean.*; +import com.avaje.ebean.EbeanServer; +import com.avaje.ebean.PersistenceContextScope; +import com.avaje.ebean.Query; +import com.avaje.ebean.Transaction; +import com.avaje.ebean.TxScope; import com.avaje.ebean.bean.BeanCollectionLoader; import com.avaje.ebean.bean.BeanLoader; import com.avaje.ebean.bean.CallStack; @@ -10,7 +12,6 @@ import com.avaje.ebean.bean.ObjectGraphNode; import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.config.dbplatform.DatabasePlatform; import com.avaje.ebeaninternal.server.autofetch.AutoFetchManager; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.core.SpiOrmQueryRequest; import com.avaje.ebeaninternal.server.ddl.DdlGenerator; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; @@ -18,6 +19,8 @@ import com.avaje.ebeaninternal.server.query.CQuery; import com.avaje.ebeaninternal.server.query.CQueryEngine; import com.avaje.ebeaninternal.server.transaction.RemoteTransactionEvent; +import java.util.List; + /** * Service Provider extension to EbeanServer. */ @@ -48,14 +51,6 @@ public interface SpiEbeanServer extends EbeanServer, BeanLoader, BeanCollectionL */ DatabasePlatform getDatabasePlatform(); - /** - * Return a JDBC driver specific handler for batching. - *

- * Required for Oracle specific batch handling. - *

- */ - PstmtBatch getPstmtBatch(); - /** * Create an object to represent the current CallStack. *

diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java index a648b8bac..11de1eedc 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultContainer.java @@ -1,36 +1,44 @@ package com.avaje.ebeaninternal.server.core; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.management.MBeanServer; -import javax.management.MBeanServerFactory; -import javax.persistence.PersistenceException; -import javax.sql.DataSource; - -import com.avaje.ebean.config.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.avaje.ebean.EbeanServer; import com.avaje.ebean.cache.ServerCacheFactory; import com.avaje.ebean.cache.ServerCacheManager; import com.avaje.ebean.cache.ServerCacheOptions; import com.avaje.ebean.common.SpiContainer; +import com.avaje.ebean.config.ContainerConfig; +import com.avaje.ebean.config.DataSourceConfig; +import com.avaje.ebean.config.PropertyMap; +import com.avaje.ebean.config.PstmtDelegate; +import com.avaje.ebean.config.ServerConfig; +import com.avaje.ebean.config.UnderscoreNamingConvention; import com.avaje.ebean.config.dbplatform.DatabasePlatform; import com.avaje.ebeaninternal.api.SpiBackgroundExecutor; import com.avaje.ebeaninternal.api.SpiEbeanServer; import com.avaje.ebeaninternal.server.cache.DefaultServerCacheFactory; import com.avaje.ebeaninternal.server.cache.DefaultServerCacheManager; import com.avaje.ebeaninternal.server.cluster.ClusterManager; -import com.avaje.ebeaninternal.server.jdbc.OraclePstmtBatch; import com.avaje.ebeaninternal.server.jdbc.StandardPstmtDelegate; import com.avaje.ebeaninternal.server.lib.ShutdownManager; import com.avaje.ebeaninternal.server.lib.sql.DataSourceAlert; import com.avaje.ebeaninternal.server.lib.sql.DataSourcePool; import com.avaje.ebeaninternal.server.lib.sql.SimpleDataSourceAlert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.management.MBeanServer; +import javax.management.MBeanServerFactory; +import javax.persistence.PersistenceException; +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; +import java.util.ServiceLoader; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.atomic.AtomicInteger; /** * Default Server side implementation of ServerFactory. @@ -109,24 +117,6 @@ public class DefaultContainer implements SpiContainer { DatabasePlatform dbPlatform = serverConfig.getDatabasePlatform(); - PstmtBatch pstmtBatch = null; - - if (dbPlatform.getName().startsWith("oracle")) { - PstmtDelegate pstmtDelegate = serverConfig.getPstmtDelegate(); - if (pstmtDelegate == null) { - // try to provide the - pstmtDelegate = getOraclePstmtDelegate(serverConfig.getDataSource()); - } - if (pstmtDelegate != null) { - // We can support JDBC batching with Oracle via OraclePreparedStatement - pstmtBatch = new OraclePstmtBatch(pstmtDelegate); - } - if (pstmtBatch == null) { - // We can not support JDBC batching with Oracle - logger.warn("Can not support JDBC batching with Oracle without a PstmtDelegate"); - serverConfig.setPersistBatching(false); - } - } // inform the NamingConvention of the associated DatabasePlaform serverConfig.getNamingConvention().setDatabasePlatform(serverConfig.getDatabasePlatform()); @@ -139,7 +129,7 @@ public class DefaultContainer implements SpiContainer { XmlConfigLoader xmlConfigLoader = new XmlConfigLoader(null); XmlConfig xmlConfig = xmlConfigLoader.load(); - InternalConfiguration c = new InternalConfiguration(xmlConfig, clusterManager, cacheManager, bgExecutor, serverConfig, bootupClasses, pstmtBatch); + InternalConfiguration c = new InternalConfiguration(xmlConfig, clusterManager, cacheManager, bgExecutor, serverConfig, bootupClasses); DefaultServer server = new DefaultServer(c, cacheManager); diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java index abe827eb8..6af9caca0 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java @@ -1,7 +1,12 @@ package com.avaje.ebeaninternal.server.core; import com.avaje.ebean.*; -import com.avaje.ebean.bean.*; +import com.avaje.ebean.bean.BeanCollection; +import com.avaje.ebean.bean.CallStack; +import com.avaje.ebean.bean.EntityBean; +import com.avaje.ebean.bean.EntityBeanIntercept; +import com.avaje.ebean.bean.ObjectGraphNode; +import com.avaje.ebean.bean.PersistenceContext; import com.avaje.ebean.bean.PersistenceContext.WithOption; import com.avaje.ebean.cache.ServerCacheManager; import com.avaje.ebean.config.EncryptKeyManager; @@ -12,16 +17,42 @@ import com.avaje.ebean.event.BeanQueryAdapter; import com.avaje.ebean.meta.MetaInfoManager; import com.avaje.ebean.text.csv.CsvReader; import com.avaje.ebean.text.json.JsonContext; -import com.avaje.ebeaninternal.api.*; +import com.avaje.ebeaninternal.api.LoadBeanRequest; +import com.avaje.ebeaninternal.api.LoadManyRequest; +import com.avaje.ebeaninternal.api.ScopeTrans; +import com.avaje.ebeaninternal.api.ScopedTransaction; +import com.avaje.ebeaninternal.api.SpiBackgroundExecutor; +import com.avaje.ebeaninternal.api.SpiEbeanPlugin; +import com.avaje.ebeaninternal.api.SpiEbeanServer; +import com.avaje.ebeaninternal.api.SpiQuery; import com.avaje.ebeaninternal.api.SpiQuery.Mode; import com.avaje.ebeaninternal.api.SpiQuery.Type; +import com.avaje.ebeaninternal.api.SpiSqlQuery; +import com.avaje.ebeaninternal.api.SpiTransaction; +import com.avaje.ebeaninternal.api.TransactionEventTable; import com.avaje.ebeaninternal.server.autofetch.AutoFetchManager; import com.avaje.ebeaninternal.server.ddl.DdlGenerator; -import com.avaje.ebeaninternal.server.deploy.*; +import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; +import com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager; +import com.avaje.ebeaninternal.server.deploy.BeanProperty; +import com.avaje.ebeaninternal.server.deploy.DNativeQuery; +import com.avaje.ebeaninternal.server.deploy.DeployNamedQuery; +import com.avaje.ebeaninternal.server.deploy.DeployNamedUpdate; +import com.avaje.ebeaninternal.server.deploy.InheritInfo; import com.avaje.ebeaninternal.server.el.ElFilter; import com.avaje.ebeaninternal.server.jmx.MAdminAutofetch; import com.avaje.ebeaninternal.server.lib.ShutdownManager; -import com.avaje.ebeaninternal.server.query.*; +import com.avaje.ebeaninternal.server.query.CQuery; +import com.avaje.ebeaninternal.server.query.CQueryEngine; +import com.avaje.ebeaninternal.server.query.CallableQueryIds; +import com.avaje.ebeaninternal.server.query.CallableQueryList; +import com.avaje.ebeaninternal.server.query.CallableQueryRowCount; +import com.avaje.ebeaninternal.server.query.CallableSqlQueryList; +import com.avaje.ebeaninternal.server.query.LimitOffsetPagedList; +import com.avaje.ebeaninternal.server.query.QueryFutureIds; +import com.avaje.ebeaninternal.server.query.QueryFutureList; +import com.avaje.ebeaninternal.server.query.QueryFutureRowCount; +import com.avaje.ebeaninternal.server.query.SqlQueryFutureList; import com.avaje.ebeaninternal.server.querydefn.DefaultOrmQuery; import com.avaje.ebeaninternal.server.querydefn.DefaultOrmUpdate; import com.avaje.ebeaninternal.server.querydefn.DefaultRelationalQuery; @@ -40,7 +71,15 @@ import javax.management.MBeanServer; import javax.management.ObjectName; import javax.persistence.OptimisticLockException; import javax.persistence.PersistenceException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.ServiceLoader; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.FutureTask; @@ -138,11 +177,6 @@ public final class DefaultServer implements SpiEbeanServer { */ private final int queryBatchSize; - /** - * JDBC driver specific handling for JDBC batch execution. - */ - private final PstmtBatch pstmtBatch; - /** * holds plugins (e.g. ddl generator) detected by the service loader */ @@ -168,7 +202,6 @@ public final class DefaultServer implements SpiEbeanServer { this.objectGraphStats = new ConcurrentHashMap(); this.metaInfoManager = new DefaultMetaInfoManager(this); this.serverCacheManager = cache; - this.pstmtBatch = config.getPstmtBatch(); this.databasePlatform = config.getDatabasePlatform(); this.backgroundExecutor = config.getBackgroundExecutor(); @@ -264,10 +297,6 @@ public final class DefaultServer implements SpiEbeanServer { return lazyLoadBatchSize; } - public PstmtBatch getPstmtBatch() { - return pstmtBatch; - } - public ServerConfig getServerConfig() { return serverConfig; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java b/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java index e009ee18c..d14059375 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java @@ -88,19 +88,16 @@ public class InternalConfiguration { private final SpiBackgroundExecutor backgroundExecutor; - private final PstmtBatch pstmtBatch; - private final XmlConfig xmlConfig; private final JsonFactory jsonFactory; public InternalConfiguration(XmlConfig xmlConfig, ClusterManager clusterManager, ServerCacheManager cacheManager, SpiBackgroundExecutor backgroundExecutor, - ServerConfig serverConfig, BootupClasses bootupClasses, PstmtBatch pstmtBatch) { + ServerConfig serverConfig, BootupClasses bootupClasses) { this.jsonFactory = serverConfig.getJsonFactory(); this.xmlConfig = xmlConfig; - this.pstmtBatch = pstmtBatch; this.clusterManager = clusterManager; this.backgroundExecutor = backgroundExecutor; this.cacheManager = cacheManager; @@ -185,12 +182,9 @@ public class InternalConfiguration { } public Persister createPersister(SpiEbeanServer server) { - return new DefaultPersister(server, binder, beanDescriptorManager, pstmtBatch); + return new DefaultPersister(server, binder, beanDescriptorManager); } - public PstmtBatch getPstmtBatch() { - return pstmtBatch; - } public ServerCacheManager getCacheManager() { return cacheManager; diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequest.java b/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequest.java index 9d7383671..baecf7470 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequest.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequest.java @@ -42,10 +42,6 @@ public abstract class PersistRequest extends BeanRequest implements BatchPostExe */ public abstract int executeNow(); - public PstmtBatch getPstmtBatch() { - return ebeanServer.getPstmtBatch(); - } - public boolean isLogSql() { return transaction.isLogSql(); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/BatchedPstmt.java b/src/main/java/com/avaje/ebeaninternal/server/persist/BatchedPstmt.java index 90c9fa5d1..c2c808ea7 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/BatchedPstmt.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/BatchedPstmt.java @@ -5,8 +5,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import com.avaje.ebeaninternal.server.core.PstmtBatch; - /** * A batched statement that is held in BatchedPstmtHolder. It has a list of * BatchPostExecute which it will process after the statement is executed. @@ -33,23 +31,13 @@ public class BatchedPstmt { private final String sql; - private final PstmtBatch pstmtBatch; - - private final boolean occCheck; - - /** * Create with a given statement. - * - * @param isGenKeys true if an insert that uses generatedKeys */ - public BatchedPstmt(PreparedStatement pstmt, boolean isGenKeys, String sql, PstmtBatch pstmtBatch, boolean occCheck) { - + public BatchedPstmt(PreparedStatement pstmt, boolean isGenKeys, String sql) { this.pstmt = pstmt; this.isGenKeys = isGenKeys; this.sql = sql; - this.pstmtBatch = pstmtBatch; - this.occCheck = occCheck; } /** @@ -112,21 +100,7 @@ public class BatchedPstmt { private void executeAndCheckRowCounts() throws SQLException { - if (pstmtBatch != null) { - // oracle specific JDBC batch processing - int rc = pstmtBatch.executeBatch(pstmt, list.size(), sql, occCheck); - if (list.size() == 1) { - list.get(0).checkRowCount(rc); - } - // the optimistic concurrency row count check - // has already been done by pstmtBatch so just return - return; - - } - - // normal JDBC batch processing int[] results = pstmt.executeBatch(); - if (results.length != list.size()) { String s = "results array error " + results.length + " " + list.size(); throw new SQLException(s); diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java index 4c959b479..a72094e4f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java @@ -27,11 +27,11 @@ public final class DefaultPersistExecute implements PersistExecute { /** * Construct this DmlPersistExecute. */ - public DefaultPersistExecute(Binder binder, PstmtBatch pstmtBatch, int defaultBatchSize) { + public DefaultPersistExecute(Binder binder, int defaultBatchSize) { - this.exeOrmUpdate = new ExeOrmUpdate(binder, pstmtBatch); - this.exeUpdateSql = new ExeUpdateSql(binder, pstmtBatch); - this.exeCallableSql = new ExeCallableSql(binder, pstmtBatch); + this.exeOrmUpdate = new ExeOrmUpdate(binder); + this.exeUpdateSql = new ExeUpdateSql(binder); + this.exeCallableSql = new ExeCallableSql(binder); this.defaultBatchSize = defaultBatchSize; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java index 8d46c391f..79109d42e 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java @@ -1,16 +1,5 @@ package com.avaje.ebeaninternal.server.persist; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.PersistenceException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.avaje.ebean.CallableSql; import com.avaje.ebean.Query; import com.avaje.ebean.SqlUpdate; @@ -26,13 +15,12 @@ import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.api.SpiUpdate; import com.avaje.ebeaninternal.server.core.Message; import com.avaje.ebeaninternal.server.core.PersistRequest; +import com.avaje.ebeaninternal.server.core.PersistRequest.Type; import com.avaje.ebeaninternal.server.core.PersistRequestBean; import com.avaje.ebeaninternal.server.core.PersistRequestCallableSql; import com.avaje.ebeaninternal.server.core.PersistRequestOrmUpdate; import com.avaje.ebeaninternal.server.core.PersistRequestUpdateSql; import com.avaje.ebeaninternal.server.core.Persister; -import com.avaje.ebeaninternal.server.core.PstmtBatch; -import com.avaje.ebeaninternal.server.core.PersistRequest.Type; import com.avaje.ebeaninternal.server.deploy.BeanCollectionUtil; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; import com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager; @@ -42,6 +30,15 @@ import com.avaje.ebeaninternal.server.deploy.BeanPropertyAssocMany; import com.avaje.ebeaninternal.server.deploy.BeanPropertyAssocOne; import com.avaje.ebeaninternal.server.deploy.IntersectionRow; import com.avaje.ebeaninternal.server.deploy.ManyType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.PersistenceException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Persister implementation using DML. @@ -74,12 +71,11 @@ public final class DefaultPersister implements Persister { private final boolean updatesDeleteMissingChildren; - public DefaultPersister(SpiEbeanServer server, Binder binder, BeanDescriptorManager descMgr, PstmtBatch pstmtBatch) { - + public DefaultPersister(SpiEbeanServer server, Binder binder, BeanDescriptorManager descMgr) { this.server = server; this.updatesDeleteMissingChildren = server.getServerConfig().isUpdatesDeleteMissingChildren(); this.beanDescriptorManager = descMgr; - this.persistExecute = new DefaultPersistExecute(binder, pstmtBatch, server.getServerConfig().getPersistBatchSize()); + this.persistExecute = new DefaultPersistExecute(binder, server.getServerConfig().getPersistBatchSize()); } /** diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeCallableSql.java b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeCallableSql.java index afb343812..d3cd9683c 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeCallableSql.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeCallableSql.java @@ -1,20 +1,18 @@ package com.avaje.ebeaninternal.server.persist; -import java.sql.CallableStatement; -import java.sql.SQLException; - -import javax.persistence.PersistenceException; - import com.avaje.ebeaninternal.api.BindParams; import com.avaje.ebeaninternal.api.SpiCallableSql; import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.server.core.PersistRequestCallableSql; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.type.DataBind; import com.avaje.ebeaninternal.server.util.BindParamsParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.persistence.PersistenceException; +import java.sql.CallableStatement; +import java.sql.SQLException; + /** * Handles the execution of CallableSql requests. */ @@ -26,10 +24,9 @@ public class ExeCallableSql { private final PstmtFactory pstmtFactory; - public ExeCallableSql(Binder binder, PstmtBatch pstmtBatch) { + public ExeCallableSql(Binder binder) { this.binder = binder; - // no batch support for CallableStatement in Oracle anyway - this.pstmtFactory = new PstmtFactory(null); + this.pstmtFactory = new PstmtFactory(); } /** diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeOrmUpdate.java b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeOrmUpdate.java index 37fda4da1..bdbdba166 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeOrmUpdate.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeOrmUpdate.java @@ -1,21 +1,19 @@ package com.avaje.ebeaninternal.server.persist; -import java.sql.PreparedStatement; -import java.sql.SQLException; - -import javax.persistence.PersistenceException; - import com.avaje.ebeaninternal.api.BindParams; import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.api.SpiUpdate; import com.avaje.ebeaninternal.server.core.PersistRequestOrmUpdate; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; import com.avaje.ebeaninternal.server.type.DataBind; import com.avaje.ebeaninternal.server.util.BindParamsParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.persistence.PersistenceException; +import java.sql.PreparedStatement; +import java.sql.SQLException; + /** * Executes the UpdateSql requests. */ @@ -30,8 +28,8 @@ public class ExeOrmUpdate { /** * Create with a given binder. */ - public ExeOrmUpdate(Binder binder, PstmtBatch pstmtBatch) { - this.pstmtFactory = new PstmtFactory(pstmtBatch); + public ExeOrmUpdate(Binder binder) { + this.pstmtFactory = new PstmtFactory(); this.binder = binder; } @@ -46,12 +44,7 @@ public class ExeOrmUpdate { try { pstmt = bindStmt(request, batchThisRequest); if (batchThisRequest) { - PstmtBatch pstmtBatch = request.getPstmtBatch(); - if (pstmtBatch != null) { - pstmtBatch.addBatch(pstmt); - } else { - pstmt.addBatch(); - } + pstmt.addBatch(); // return -1 to indicate batch mode return -1; } else { diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeUpdateSql.java b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeUpdateSql.java index d94a3f132..ebc58002e 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/ExeUpdateSql.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/ExeUpdateSql.java @@ -5,7 +5,6 @@ import com.avaje.ebeaninternal.api.SpiSqlUpdate; import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.server.core.PersistRequestUpdateSql; import com.avaje.ebeaninternal.server.core.PersistRequestUpdateSql.SqlType; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.type.DataBind; import com.avaje.ebeaninternal.server.util.BindParamsParser; import org.slf4j.Logger; @@ -22,21 +21,16 @@ public class ExeUpdateSql { private static final Logger logger = LoggerFactory.getLogger(ExeUpdateSql.class); - private static final int defaultBatchSize = 20; - private final Binder binder; private final PstmtFactory pstmtFactory; - private final PstmtBatch pstmtBatch; - /** * Create with a given binder. */ - public ExeUpdateSql(Binder binder, PstmtBatch pstmtBatch) { + public ExeUpdateSql(Binder binder) { this.binder = binder; - this.pstmtBatch = pstmtBatch; - this.pstmtFactory = new PstmtFactory(pstmtBatch); + this.pstmtFactory = new PstmtFactory(); } /** @@ -52,11 +46,7 @@ public class ExeUpdateSql { pstmt = bindStmt(request, batchThisRequest); if (batchThisRequest) { - if (pstmtBatch != null) { - pstmtBatch.addBatch(pstmt); - } else { - pstmt.addBatch(); - } + pstmt.addBatch(); // return -1 to indicate batch mode return -1; } else { @@ -97,14 +87,6 @@ public class ExeUpdateSql { PreparedStatement pstmt; if (batchThisRequest) { pstmt = pstmtFactory.getPstmt(t, logSql, sql, request); - if (pstmtBatch != null) { - // oracle specific JDBC setting batch size ahead of time - int batchSize = t.getBatchSize(); - if (batchSize < 1) { - batchSize = defaultBatchSize; - } - pstmtBatch.setBatchSize(pstmt, batchSize); - } } else { if (logSql) { t.logSql(sql); diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/PstmtFactory.java b/src/main/java/com/avaje/ebeaninternal/server/persist/PstmtFactory.java index 7131beb0a..f9f995805 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/PstmtFactory.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/PstmtFactory.java @@ -1,13 +1,12 @@ package com.avaje.ebeaninternal.server.persist; +import com.avaje.ebeaninternal.api.SpiTransaction; + import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; -import com.avaje.ebeaninternal.api.SpiTransaction; -import com.avaje.ebeaninternal.server.core.PstmtBatch; - /** * Factory for creating Statements. *

@@ -17,11 +16,7 @@ import com.avaje.ebeaninternal.server.core.PstmtBatch; */ public class PstmtFactory { - - private final PstmtBatch pstmtBatch; - - public PstmtFactory(PstmtBatch pstmtBatch) { - this.pstmtBatch = pstmtBatch; + public PstmtFactory() { } /** @@ -60,11 +55,7 @@ public class PstmtFactory { Connection conn = t.getInternalConnection(); stmt = conn.prepareStatement(sql); - if (pstmtBatch != null) { - pstmtBatch.setBatchSize(stmt, t.getBatchControl().getBatchSize()); - } - - BatchedPstmt bs = new BatchedPstmt(stmt, false, sql, pstmtBatch, false); + BatchedPstmt bs = new BatchedPstmt(stmt, false, sql); batch.addStmt(bs, batchExe); return stmt; } @@ -89,7 +80,7 @@ public class PstmtFactory { Connection conn = t.getInternalConnection(); stmt = conn.prepareCall(sql); - BatchedPstmt bs = new BatchedPstmt(stmt, false, sql, pstmtBatch, false); + BatchedPstmt bs = new BatchedPstmt(stmt, false, sql); batch.addStmt(bs, batchExe); return stmt; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java b/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java index 46a913ee3..782165766 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java @@ -1,19 +1,8 @@ package com.avaje.ebeaninternal.server.persist.dml; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.ArrayList; - -import javax.persistence.OptimisticLockException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.avaje.ebean.bean.EntityBean; import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.server.core.PersistRequestBean; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.deploy.BeanProperty; import com.avaje.ebeaninternal.server.lib.util.Str; import com.avaje.ebeaninternal.server.persist.BatchedPstmt; @@ -21,6 +10,14 @@ import com.avaje.ebeaninternal.server.persist.BatchedPstmtHolder; import com.avaje.ebeaninternal.server.persist.dmlbind.BindableRequest; import com.avaje.ebeaninternal.server.transaction.TransactionManager; import com.avaje.ebeaninternal.server.type.DataBind; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.OptimisticLockException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; /** * Base class for Handler implementations. @@ -100,12 +97,7 @@ public abstract class DmlHandler implements PersistHandler, BindableRequest { */ @Override public void addBatch() throws SQLException { - PstmtBatch pstmtBatch = persistRequest.getPstmtBatch(); - if (pstmtBatch != null) { - pstmtBatch.addBatch(dataBind.getPstmt()); - } else { - dataBind.getPstmt().addBatch(); - } + dataBind.getPstmt().addBatch(); } /** @@ -277,12 +269,7 @@ public abstract class DmlHandler implements PersistHandler, BindableRequest { stmt = getPstmt(t, sql, genKeys); - PstmtBatch pstmtBatch = request.getPstmtBatch(); - if (pstmtBatch != null) { - pstmtBatch.setBatchSize(stmt, t.getBatchControl().getBatchSize()); - } - - BatchedPstmt bs = new BatchedPstmt(stmt, genKeys, sql, request.getPstmtBatch(), true); + BatchedPstmt bs = new BatchedPstmt(stmt, genKeys, sql); batch.addStmt(bs, request); return stmt; } diff --git a/src/test/java/com/avaje/ebeaninternal/api/TDSpiEbeanServer.java b/src/test/java/com/avaje/ebeaninternal/api/TDSpiEbeanServer.java index 5e913174a..7f5693abc 100644 --- a/src/test/java/com/avaje/ebeaninternal/api/TDSpiEbeanServer.java +++ b/src/test/java/com/avaje/ebeaninternal/api/TDSpiEbeanServer.java @@ -12,7 +12,6 @@ import com.avaje.ebean.meta.MetaInfoManager; import com.avaje.ebean.text.csv.CsvReader; import com.avaje.ebean.text.json.JsonContext; import com.avaje.ebeaninternal.server.autofetch.AutoFetchManager; -import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.core.SpiOrmQueryRequest; import com.avaje.ebeaninternal.server.ddl.DdlGenerator; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; @@ -63,11 +62,6 @@ public class TDSpiEbeanServer implements SpiEbeanServer { return null; } - @Override - public PstmtBatch getPstmtBatch() { - return null; - } - @Override public CallStack createCallStack() { return null;