01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: */
19: package org.apache.openjpa.jdbc.kernel;
20:
21: import java.sql.Connection;
22: import java.util.Collection;
23:
24: import org.apache.openjpa.jdbc.sql.RowManager;
25:
26: /**
27: * <P>Batch update manager that writes the SQL in object-level operation order.
28: * This update manager initiates a BatchPreparedStatementManagerImpl which
29: * will utilize the JDBC addBatch() and executeBatch() APIs to batch the
30: * statements for performance improvement.</P>
31: * <P>This is the default plug-in class for UpdateManager to support statement
32: * batching. You can plug-in your own statement batch implementation through
33: * the following property:
34: * <PRE>
35: * < property name="openjpa.jdbc.UpdateManager"
36: * value="org.apache.openjpa.jdbc.kernel.YourOperationOrderUpdateManager" />
37: * </PRE></P>
38: * @author Teresa Kan
39: */
40:
41: public class BatchingConstraintUpdateManager extends
42: ConstraintUpdateManager {
43:
44: protected PreparedStatementManager newPreparedStatementManager(
45: JDBCStore store, Connection conn) {
46: int batchLimit = dict.getBatchLimit();
47: return new BatchingPreparedStatementManagerImpl(store, conn,
48: batchLimit);
49: }
50:
51: /*
52: * Override this method to flush any remaining batched row in the
53: * PreparedStatementManager.
54: */
55: protected Collection flush(RowManager rowMgr,
56: PreparedStatementManager psMgr, Collection exceps) {
57: Collection rtnCol = super .flush(rowMgr, psMgr, exceps);
58: BatchingPreparedStatementManagerImpl bPsMgr = (BatchingPreparedStatementManagerImpl) psMgr;
59: bPsMgr.flushBatch();
60: return rtnCol;
61: }
62: }
|