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
@@ -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;