db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg von Frantzius <joerg.von.frantz...@artnology.com>
Subject Re: [IMPORTANT] Fetch-depth
Date Thu, 26 Jan 2006 14:02:18 GMT
Hi all,

please see my comments below.

Craig L Russell schrieb:
> Javadogs,
> Here's what I'm proposing, in summary. 
> 1. Add a property to FetchPlan: get/setMaxFetchDepth. This property 
> limits the depth of the fetched instance graph counting from the root 
> of the instances. The roots are defined for queries as the results of 
> the query. The roots of retrieve and detachCopy are the parameter 
> instances. The default is 1, meaning fetch one level of objects 
> reachable from the roots. A value of 0 has no meaning, because if a 
> relationship field is in the fetch group, it will be fetched.
Would a value of -1 then mean "fetch indefinitely"? I'd somehow find 
that intuitive.
> 2. Add a property to FetchPlan: get/setDetachRoots. The roots for 
> DetachAllOnCommit are all the instances in the DetachRoots on 
> FetchPlan. The default is all instances in the cache. Or it could be 
> all instances retrieved by queries, explicitly made persistent, or 
> explicitly retrieved.
> 3. In order to avoid confusion, remove fetch-depth attribute for the 
> field element and replace it with recursion-depth attribute. This has 
> two effects: it requires users to change their metadata and think 
> about what the fetch-depth was used for; and it better reflects the 
> purpose of the attribute to limit recursion. The meaning of 
> recursion-depth is the maximum number of links to follow from the 
> target instance of this field in case the same class is encountered 
> again.
Shouldn't it simply be the number of times the given class can be 
traversed while fetching? If we specify a recursion depth, then the 
resulting number of actual fetches (links followed) depends on the 
length of any class cycles encountered in the object graph. So we're not 
directly giving a number of fetches here.
> 4. In case of multiple definitions of the same field recursion-depth, 
> the largest number for the same field will be used. That is, if the 
> same field is declared in multiple fetch groups, a simple MAX of all 
> the values is used.
> I'll write up a number of examples and send them tomorrow.
> Comments?
> Craig
> On Jan 13, 2006, at 3:10 PM, Craig L Russell wrote:
>> Javadogs,
>> I've spent some time looking at the semantics of fetch-depth and now 
>> agree with the critics of the change that I proposed back in the 
>> infamous October 1, 2005 message to the expert group subject: *Re: 
>> JDO2 §12.7.2: fetch-depth only for "recursive fetch group references"?*.
>> I now believe it's impractical to use fetch-depth to mean the maximum 
>> depth of the object graph reachable from the root object(s) field 
>> because of several messages sent on the subject by Joerg von 
>> Frantzuis, Alexander Bieber, and Marco Schultz.
>> Briefly, the argument is that if fetch-depth limits the number 
>> absolutely, then it's not possible easily to use the fetch-group to 
>> add another field to a fetch plan simply by adding a fetch-group that 
>> includes that field. Instead, a new fetch-group that changes the 
>> fetch-depth must be used. And each new use-case needs to provide a 
>> different fetch-depth number if another level of fetching is desired.
>> I believe that the use of fetch-group to determine whether fields 
>> (navigating relationships) are fetched should be natural, and that we 
>> should therefore use fetch-depth for its original purpose of limiting 
>> recursion.
>> If you disagree with this position, please reply so we can move 
>> forward and define the use of fetch-depth for recursion (as in the 
>> original semantics of the attribute).
>> Thanks,
>> Craig
>> Craig Russell
>> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>> 408 276-5638 mailto:Craig.Russell@sun.com
>> P.S. A good JDO? O, Gasp!
> Craig Russell
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
> 408 276-5638 mailto:Craig.Russell@sun.com
> P.S. A good JDO? O, Gasp!

Dipl.-Inf. Jörg von Frantzius  |            artnology GmbH
                               |                Milastr. 4
Tel +49 (0)30 4435 099 26      |              10437 Berlin
Fax +49 (0)30 4435 099 99      |  http://www.artnology.com

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message