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