You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ol...@apache.org on 2003/05/15 23:42:21 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/otm/core ConcreteEditingContext.java
olegnitz 2003/05/15 14:42:21
Modified: src/java/org/apache/ojb/otm/core ConcreteEditingContext.java
Log:
Turn on batch mode during commit as in ODMG
Revision Changes Path
1.5 +30 -14 db-ojb/src/java/org/apache/ojb/otm/core/ConcreteEditingContext.java
Index: ConcreteEditingContext.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/otm/core/ConcreteEditingContext.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ConcreteEditingContext.java 14 May 2003 22:15:37 -0000 1.4
+++ ConcreteEditingContext.java 15 May 2003 21:42:20 -0000 1.5
@@ -60,6 +60,7 @@
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.accesslayer.ConnectionManagerIF;
import org.apache.ojb.otm.EditingContext;
import org.apache.ojb.otm.OTMKit;
import org.apache.ojb.otm.lock.LockManager;
@@ -220,26 +221,41 @@
*/
public void commit(OTMKit kit, PersistenceBroker pb)
{
+ ConnectionManagerIF connMan = pb.serviceConnectionManager();
+ boolean saveBatchMode = connMan.isBatchMode();
Swizzling swizzlingStrategy = kit.getSwizzlingStrategy();
- for (Iterator iterator = _order.iterator(); iterator.hasNext();)
+ connMan.setBatchMode(true);
+ try
{
- ContextEntry entry = (ContextEntry) _objects.get(iterator.next());
- Object realTarget = swizzlingStrategy.getRealTarget(entry.object);
- State state = entry.state;
-
- if (state.needsUpdate() || state.needsInsert())
- {
- pb.store(realTarget /*, state*/);
- }
- else if (state.needsDelete())
+ for (Iterator iterator = _order.iterator(); iterator.hasNext();)
{
- pb.delete(realTarget);
+ ContextEntry entry = (ContextEntry) _objects.get(iterator.next());
+ Object realTarget = swizzlingStrategy.getRealTarget(entry.object);
+ State state = entry.state;
+
+ if (state.needsUpdate() || state.needsInsert())
+ {
+ pb.store(realTarget /*, state*/);
+ }
+ else if (state.needsDelete())
+ {
+ pb.delete(realTarget);
+ }
+ entry.state = state.commit();
}
- entry.state = state.commit();
+ connMan.executeBatch();
+ _objects.clear();
+ _order.clear();
+ }
+ catch (Throwable t)
+ {
+ connMan.clearBatch();
+ }
+ finally
+ {
+ connMan.setBatchMode(saveBatchMode);
}
- _objects.clear();
- _order.clear();
}
/**