If I am understanding it correctly, it is supposed to be a way to interface with the underlying batch mode in JDBC. There, you add insert statements to a batch, and then execute them all at once. It should save on overhead. We have to migrate a large customer database, so we need any overhead savings we can get.
Please, anyone who knows more than me about this, correct me if I am wrong! Bonnie MacKellar software engineer Mobius Management Systems, Inc. [EMAIL PROTECTED] > -----Original Message----- > From: Emmanuel Dupont [mailto:[EMAIL PROTECTED] > Sent: Wednesday, October 22, 2003 2:34 AM > To: 'OJB Users List'; [EMAIL PROTECTED] > Subject: RE : problems with batch-mode=true > > > I read inb the doc but I didn't understood what the batch > mode="true" means. > > Can someone explain it to me ? > > Tx ! > > > -----Message d'origine----- > De : Armin Waibel [mailto:[EMAIL PROTECTED] > Envoyé : mardi 21 octobre 2003 22:58 > À : OJB Users List > Objet : Re: problems with batch-mode=true > > Hi Bonnie, > > Hope I can sheed some light on the 'problem'. > > > does this mean that you can't set batch mode to "true" > > if it is set to "false" in repository_database.xml? > yep! > I think this behaviour has a big advantage, because it is > easy to disable batch-mode by set batch-mode false in > repository (if we don't have a bug in handling bach-mode ;-)) > > ... > >> I am trying to insert records in batch mode. Perhaps I > don't understand > >> how this > >> works. Here is my test code to insert 100 customers : > >> > > Assume you have set batch-mode 'true' in repository > file. Then you have to enable batch mode for the use > PB instance. > Try this: > > >> ConnectionManagerIF conMan = > broker.serviceConnectionManager(); > >> try > >> { > >> broker.beginTransaction(); > > ==>> broker.connectionManager.setBachMode(true); > now the PB instance is running in batch-mode till you set > false or the PB instance was closed. > >> for (int i = 0; i < 100; i++) > >> { > >> > >> CustomerInterface customer = new Customer(); > >> customer.setCustomerNumber("100" + i); > >> customer.setFirstName("Big"); > >> customer.setLastName("Customer"); > >> customer.setCustomerName("BadCorporation"); > >> customer.setDeleteTag(Boolean.FALSE); > >> > >> broker.store(customer); > >> } > >> > >> conMan.executeBatch(); > think you don't need executeBatch before commit, this will be done > at commit. > >> broker.commitTransaction(); > >> } > >> > > If you still have problems with batch-mode try CVS-head. I think > Oleg has checked in some changes (but I'm not sure) > > regards, > Armin > > >> When I run this with batch-mode="false", it works > perfectly, although it > >> generates a SELECT and a > >> DELETE for every INSERT (which seems rather inefficient). > I imagine this > >> has something to do with > >> an M:N nondecomposed relationship which involves Customer records. > >> > >> When I run this with batch-mode="true", it fails. I get > the following > >> exception > >> java.lang.IllegalArgumentException: object is not an instance of > >> declaring > >> class > >> at java.lang.reflect.Method.invoke(Native Method) > >> at > >> > org.apache.ojb.broker.util.batch.PreparedStatementInvocationHa > ndler.doExec > >> ute(Unknown Source) > >> at > >> > org.apache.ojb.broker.util.batch.PreparedStatementInvocationHa > ndler.invoke > >> (Unknown Source) > >> at $Proxy0.doExecute(Unknown Source) > >> at > >> > org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(Unknown > >> Source) > >> at > >> > org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.execut > eBatch(Unkno > >> wn Source) > >> at > >> > com.mobius.activebill.dbmigrationutils.CustomerMigration.main( > CustomerMigr > >> ation.java:68) > >> rethrown as > org.apache.ojb.broker.accesslayer.OJBBatchUpdateException: > >> object is not an instance of declaring class > >> at > >> > org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.execut > eBatch(Unkno > >> wn Source) > >> at > >> > com.mobius.activebill.dbmigrationutils.CustomerMigration.main( > CustomerMigr > >> ation.java:68) > >> when conMan.executeBatch() is called. > >> > >> Am I doing something wrong here? I am using rc4, with > MSSqlServer and > >> JSQLConnect. > >> > >> thanks, > >> Bonnie MacKellar > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >