yes and no. It depends on your fetch strategy for that collection. To
review you have:
1. SELECT (eager or lazy)
2. JOIN (eager)
3. BATCH (lazy)
4. SUBSELECT (lazy)
To illustrate let's consider a familiar collection role: Order#lineItems.
I'll only consider LAZY scenarios, since eager would make no sense here...
SUBSELECT comes closest to what you describe. That loads *all* collections
of a given role that are attached to the Session, although it has no idea
about which are initialized and which are not. If you have associated 50
Order entities with the Session, accessing one collection forces loading of
all of them. But it queries for the collection elements for all 50,
regardless of whether one or more were already initialized.
BATCH is similar but limits the collections initialized to a certain number
which it then queries for by FK. This approach does actually consider
which collections have already been initialized and excludes them from the
SELECT is typical n+1. The collections are initialized one by one as they
What I propose is different from all of these, but BATCH comes closest
(just like we saw with entity multi-id loading). The idea is to allow the
application to control the batches. It would look something like:
session.byMultipleCollectionKeys( "com.acme.Order.lineItems" ).initialize(
1, 2, 3, 4 );
I am not a fan of the `byMultipleCollectionKeys` name. Also, should this
be based on the collection key (the FK) or the collection's owner id?
Probably the latter makes more sense.
But the general idea is that the application knows which collections are
needed next and can initialize just those. The method has no return as it
works on the collections associated with the Session.
On Mon, Jan 16, 2017 at 3:58 AM Sanne Grinovero <sanne(a)hibernate.org> wrote:
It sounds interesting but I'm not sure I understand you. Could
elaborate please? Isn't this the same "thing" which I'd trigger when
attempting to access a member of a non-initialized & attached
On 14 January 2017 at 20:21, Steve Ebersole <steve(a)hibernate.org> wrote:
> I'm curious if anyone sees value in
> a MultiCollectionOwnerIdentifierLoadAccess variant (or some more concise
> name) of MultiIdentifierLoadAccess for bulk initializing a collection
> based on their owner ids?
> hibernate-dev mailing list