openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Fetch configuration
Date Mon, 25 Aug 2008 19:57:19 GMT
Please see this message posted on the openjpa list:
http://n2.nabble.com/Fetch-Group-questions-tc534861.html

One of the comments is particularly relevant to JDO:
2.
http://openjpa.apache.org/docs/latest/manual/manual.html#ref_guide_fetch_impl
says that "Even when a direct relation is not eagerly fetched,
OpenJPA selects the foreign key columns and caches the values. This way
when you do traverse the relation, OpenJPA can often find the related
object in its cache, or at least avoid joins when loading the related
object from the database." - that's very kind, but may be we have an
Entity with lots of foreign key columns and I KNOW I only want a list
showing a few attributes, and I KNOW that the direct relations won't be
traversed (say because the Entites are detached, may be). Is there any
way to configure OpenJPA to NOT eagerly fetch direct relations, unless
they are explicitly part of the Fetch Group? Actually what I'd want is
to be able to by default not include foreign key columns, but have a way
to explicitly include them - which is not the same as having the field
as part of the FetchGroup (that will lead to a JOIN, I may just want to
control whether or not to selects the foreign key column).

Currently we don't have the notion in JDO of fetching key values of  
relationships, just fetching the targets of these keys.

Would it be useful to consider adding to the JDO specification the  
ability to specify fetching the keys for relationships and not the  
relationships themselves? This would probably include adding some  
metadata to fetch-group and to FetchGroup.

One thing to kick around, is changing the meaning of recursion- 
depth==0 so changing:

-1 recurse indefinitely
1 just fetch the target of this field
n fetch the target and recurse n times
0 just fetch the identifier (foreign key value) for the field but not  
the field itself

This is a "spare bit" that is currently not particularly useful, since  
the specified behavior is identical if "the member is not specified in  
the FetchGroup" and "the member is specified with a recursion-depth of  
0".

Craig

Craig L 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!


Mime
View raw message