Need for a new -to-many fetch mode, retrieving children ids only (otherwise L2 cache is
poorly used when retrieving collections of cached objects)
--------------------------------------------------------------------------------------------------------------------------------------------------
Key: HHH-4071
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4071
Project: Hibernate Core
Issue Type: Improvement
Components: caching (L2)
Affects Versions: 3.3.0.SP1
Environment: hibernate : 3.3.0
database : probably not pertinent (sybase 12.5)
Reporter: Yannick le Restif
The proposed improvement is a -to-many association fetch mode (maybe lazy mode) where
only children ids would be fetched when we fetch the collection, rather than whole
children entities, as it is the case now.
Suppose we use a second level cache for children entities, and that we warm this cache up
at application start : We will still fetch these children entites each time we fetch a
collection of such entities, althought all of them were available in the second level
cache !
Of course using a collections cache helps a bit, but only a bit, because of course we will
then fetch a *given* collection only once, but that could still mean a lot of unnecessary
entity fetching if one entity is in many collections.
With the new fetch mode proposed, we would only fetch the children ids list, and then get
the entities one by one lazily, allowing for using the cache, so the only SQL generated
would for example be if we are fetching Bids for an Item :
SELECT bids.id FROM bids WHERE bids.item_id = 123
instead of
SELECT bids.id, bids.user, bids.date, ... FROM bids WHERE bids.item_id = 123
If the collection itself is cached, the result can be cached as the collection value (L2
collections cache only contains collections of ids, if I'm not mistaking...?)
The mode could then also be used warm collections caches up.
Maybe there is a way to get around this, but I found neither that was satisfactory.
The "best" I found is to link the father entity to a collection of "id
entities", themselves linked (one-to-one) to the "real", big entity. But
this is not handy.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira