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/08 22:53:58 UTC

svn commit: r367104 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java

Author: arminw
Date: Sun Jan  8 13:53:54 2006
New Revision: 367104

URL: http://svn.apache.org/viewcvs?rev=367104&view=rev
Log:
minor performance improvements

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java?rev=367104&r1=367103&r2=367104&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java Sun Jan  8 13:53:54 2006
@@ -549,22 +549,25 @@
             {
                 return;
             }
-            
+
             ClassDescriptor cld = getClassDescriptor(obj.getClass());
+            Identity oid = serviceIdentity().buildIdentity(cld, obj);
+
             //BRJ: check for valid pk
-            if (!serviceBrokerHelper().assertValidPkForDelete(cld, obj))
+            //if (!serviceBrokerHelper().assertValidPkForDelete(cld, obj))
+            // TODO: arminw: this simple check should do the same - verify
+            if (oid.isTransient())
             {
                 String msg = "Cannot delete object without valid PKs. " + obj;
                 logger.error(msg);
                 return;
             }
-            
+
             /**
              * MBAIRD
              * 2. register object in markedForDelete map.
              */
             markedForDelete.add(obj);
-            Identity oid = serviceIdentity().buildIdentity(cld, obj);
 
             // Invoke events on PersistenceBrokerAware instances and listeners
             BEFORE_DELETE_EVENT.setTarget(obj);
@@ -768,12 +771,14 @@
         if(obj == null) return;
 
         ClassDescriptor cld = getClassDescriptor(obj.getClass());
+        Identity oid = serviceIdentity().buildIdentity(cld, obj);
         /*
         if one of the PK fields was null, we assume the objects
         was new and needs insert
         */
-        boolean insert = serviceBrokerHelper().hasNullPKField(cld, obj);
-        Identity oid = serviceIdentity().buildIdentity(cld, obj);
+        // boolean insert = serviceBrokerHelper().hasNullPKField(cld, obj);
+        // TODO: arminw: this should do the same - verify
+        boolean insert = oid.isTransient();
         /*
         if PK values are set, lookup cache or db to see whether object
         needs insert or update
@@ -1523,8 +1528,8 @@
         }
         return newObj;
     }
-    
-    
+
+
     /**
      * Retrieve an full materialized (dependent on the metadata settings)
      * object by it's identity from the database, as well as caching the
@@ -1849,7 +1854,12 @@
     private void storeToDb(Object obj, ClassDescriptor cld, Identity oid, boolean insert, boolean ignoreReferences)
     {
         // 1. link and store 1:1 references
-        storeReferences(obj, cld, insert, ignoreReferences);
+        // we can skip handling for 1:1 references if
+        // it's enabled and the class has no super-reference
+        if(!(ignoreReferences && cld.getSuperReference() == null))
+        {
+            storeReferences(obj, cld, insert, ignoreReferences);
+        }
 
         Object[] pkValues = oid.getPrimaryKeyValues();
         if (!serviceBrokerHelper().assertValidPksForStore(cld.getPkFields(), pkValues))
@@ -1912,7 +1922,7 @@
         // cache object for symmetry with getObjectByXXX()
         // Add the object to the cache.
         objectCache.doInternalCache(oid, obj, ObjectCacheInternal.TYPE_WRITE);
-        // 3. store 1:n and m:n associations
+        // 3. store 1:n and m:n associations except if we have to skip
         if(!ignoreReferences) storeCollections(obj, cld, insert);
     }
 



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