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 ar...@apache.org on 2006/01/28 10:58:49 UTC

svn commit: r373111 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java

Author: arminw
Date: Sat Jan 28 01:58:41 2006
New Revision: 373111

URL: http://svn.apache.org/viewcvs?rev=373111&view=rev
Log:
execute batch on insert, when identity columns are used
method rename

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?rev=373111&r1=373110&r2=373111&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java Sat Jan 28 01:58:41 2006
@@ -204,13 +204,12 @@
                 throw new PersistenceBrokerException("getInsertStatement returned a null statement");
             }
             // before bind values perform autoincrement sequence columns
-            assignAutoincrementSequences(cld, obj);
+            preSequenceProcess(cld, obj);
             sm.bindInsert(stmt, cld, obj);
-            if (logger.isDebugEnabled())
-                logger.debug("executeInsert: " + stmt);
+            if (logger.isDebugEnabled()) logger.debug("executeInsert: " + stmt);
             stmt.executeUpdate();
             // after insert read and assign identity columns
-            assignAutoincrementIdentityColumns(cld, obj);
+            postSequenceProcess(cld, obj);
 
             // Harvest any return values.
             harvestReturnValues(cld.getInsertProcedure(), obj, stmt);
@@ -517,9 +516,7 @@
         {
             // Don't log as error
             if (logger.isDebugEnabled())
-                logger.debug(
-                    "OptimisticLockException during the execution of update: " + e.getMessage(),
-                    e);
+                logger.debug("OptimisticLockException during the execution of update: " + e.getMessage(), e);
             throw e;
         }
         catch (PersistenceBrokerException e)
@@ -527,9 +524,7 @@
             // BRJ: restore old locking values
             setLockingValues(cld, obj, oldLockingValues);
 
-            logger.error(
-                "PersistenceBrokerException during the execution of the update: " + e.getMessage(),
-                e);
+            logger.error("PersistenceBrokerException during the execution of the update: " + e.getMessage(), e);
             throw e;
         }
         catch (SQLException e)
@@ -767,7 +762,7 @@
         return true;
     }
 
-    protected void assignAutoincrementSequences(ClassDescriptor cld, Object target) throws SequenceManagerException
+    protected void preSequenceProcess(ClassDescriptor cld, Object target) throws SequenceManagerException
     {
         // TODO: refactor auto-increment handling, auto-increment should only be supported by PK fields?
         // FieldDescriptor[] fields = cld.getPkFields();
@@ -788,10 +783,16 @@
         }
     }
 
-    protected void assignAutoincrementIdentityColumns(ClassDescriptor cld, Object target) throws SequenceManagerException
+    protected void postSequenceProcess(ClassDescriptor cld, Object target) throws SequenceManagerException
     {
         // if database Identity Columns are used, query the id from database
         // other SequenceManager implementations will ignore this call
-        if(cld.useIdentityColumnField()) broker.serviceSequenceManager().afterStore(this, cld, target);
+        if(cld.useIdentityColumnField())
+        {
+            // execute batch to ensure existance of new id
+            broker.serviceConnectionManager().executeBatch();
+            // lookup identity column PK value from DB and set PK in persistent object
+            broker.serviceSequenceManager().afterStore(this, cld, target);
+        }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org