db-jdo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Ezzio <dez...@bea.com>
Subject Re: getAllReferencingObjects(Object object) request
Date Fri, 15 Jun 2007 14:02:45 GMT
Hi Christiaan,

I agree your feature request would be convenient.  But I don't see any 
way to implement it that wouldn't be a design and performance nightmare.

Consider first all the design implications.  Java, as you know, does not 
have any such concept.  For Java, it is unnecessary, since objects exist 
as long as another uncollectable object refers to them. This is how Java 
avoids, as you know, the dangling references of C++.

Then consider performance.  The JDO implementation very likely has a set 
of references to uncollected pc objects, but how would it determine that 
one of these objects refers to the object in question?  It would have to 
reflect on all the fields and see if they have a reference that is 
compatible with the type of the checked object and in fact refers to it.

If I understand your requirement, you have an a graph of objects where 
you want to make any one of them go away.  In Java, you would have to 
update all objects that refer to the object to be removed.  You have to 
do the same when using JDO.  The JDO implementation may give you a 
vendor feature that might help.  Some JDO implementations persistence 
manager can give you a list of pc objects that they are managing.  You 
could run a query on this set of objects to determine which ones refer 
to the object that you want to delete.


David Ezzo

Christiaan des Bouvrie wrote:
> Dear all,
> I would like to make a feature request for a
> getAllReferencingObjects(Object object) method, which should return a
> set of pc objects which have a reference to the specified pc object.
> This would be really convenient for instance when deleting an object to
> make sure all references are set to null. In the domain I am working I
> have a network of all kinds of objects where each object can be deleted
> and thus all other objects have to update their reference. I currently
> have a generic delete algorithm which recursively asks all (cascaded
> deleted) objects to get their references in order to update them. Of
> course, this method would also be quite convenient in unittest to make
> sure you have updated everything properly.
> Kind regards,
> Christiaan

Notice:  This email message, together with any attachments, may contain information  of  BEA
Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,
 copyrighted  and/or legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient, and have received
this message in error, please immediately return this by email and then delete it.

View raw message