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/02/02 19:12:52 UTC
svn commit: r374451 -
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
Author: arminw
Date: Thu Feb 2 10:12:48 2006
New Revision: 374451
URL: http://svn.apache.org/viewcvs?rev=374451&view=rev
Log:
performance optimization for refresh reference check
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=374451&r1=374450&r2=374451&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 Thu Feb 2 10:12:48 2006
@@ -161,6 +161,12 @@
private IdentityArrayList markedForDelete = new IdentityArrayList();
/**
+ * Used for performance optimization of method
+ * {@link #checkRefreshRelationships(Object, org.apache.ojb.broker.Identity, org.apache.ojb.broker.metadata.ClassDescriptor)}
+ */
+ private IdentityArrayList skipRefreshRelationship = new IdentityArrayList();
+
+ /**
* The set of identities of all deleted objects during current transaction
*/
/*
@@ -390,6 +396,7 @@
}
finally
{
+ if(skipRefreshRelationship.size() > 0) skipRefreshRelationship.clear();
// reset flag indicating use in managed environment
setManaged(false);
// free current used DescriptorRepository reference
@@ -1433,6 +1440,8 @@
*/
public void checkRefreshRelationships(Object obj, Identity oid, ClassDescriptor cld)
{
+ if(skipRefreshRelationship.contains(cld)) return;
+
Iterator iter;
CollectionDescriptor cds;
ObjectReferenceDescriptor rds;
@@ -1449,6 +1458,7 @@
}
try
{
+ boolean needsRelationshipRefresh = false;
getInternalCache().enableMaterializationCache();
if(tmp == null)
{
@@ -1462,6 +1472,7 @@
if (cds.isRefresh())
{
referencesBroker.retrieveCollection(obj, cld, cds, false);
+ needsRelationshipRefresh = true;
}
}
iter = cld.getObjectReferenceDescriptors().iterator();
@@ -1471,9 +1482,14 @@
if (rds.isRefresh())
{
referencesBroker.retrieveReference(obj, cld, rds, false);
+ needsRelationshipRefresh = true;
}
}
getInternalCache().disableMaterializationCache();
+ if(!needsRelationshipRefresh)
+ {
+ skipRefreshRelationship.add(cld);
+ }
}
catch(RuntimeException e)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org