Personally I find that to be too much work to set up.
On Wed, Nov 18, 2015 at 2:52 AM Gunnar Morling <gunnar(a)hibernate.org> wrote:
+1 it's a useful thing.
Instead of using Strings to identify loading groups, would it be
better to use class literals? It'd prevent wrong loads due to typos
and would help to identify the attributes of one group e.g. in the
IDE. But it would add the overhead for defining the groups:
public interface Lobs /* extends LoadGroup (maybe have some marker
interface?) */ {}
And then:
@LazyGroup( Lobs.class )
private Blob logo;
I am not sure whether it'd pull its weight, but am keen to learn what
others think.
Cheers,
--Gunnar
2015-11-16 22:51 GMT+01:00 Vlad Mihalcea <mihalcea.vlad(a)gmail.com>:
> Hi,
>
> Sounds like a good idea. I like the lazy fetch profiles. Previously it
> required the Blob to be moved to a different table.
>
> Vlad
>
>
>
> Vlad
>
> On Mon, Nov 16, 2015 at 11:09 PM, Steve Ebersole <steve(a)hibernate.org>
> wrote:
>
>> Regarding HHH-10267...
>>
>> 5.1 will include a new feature allowing users to specify groups for
>> (bytecode enhanced) lazy attribute loading. In the original support
>> accessing one of these lazy attributes forced them all to be loaded[1].
>> For example...
>>
>> @Entity
>> public class Company {
>> ...
>> @Basic( fetch = FetchType.LAZY )
>> private String taxIdNumber;
>> @Lob
>> @Basic( fetch = FetchType.LAZY )
>> private Blob logo;
>> }
>>
>> Once an application accessed any of the lazy attributes, they were all
>> loaded/initialized. So accessing `getTaxIdNumber()` would force `logo`
to
>> be fetched as well. The new feature here is the ability to segment
>> attributes into different groups for lazy loading:
>>
>> @Entity
>> public class Company {
>> ...
>> @Basic( fetch = FetchType.LAZY )
>> private String taxIdNumber;
>> @Lob
>> @Basic( fetch = FetchType.LAZY )
>> @LazyGroup( "lobs" )
>> private Blob logo;
>> }
>>
>> `@LazyGroup( "lobs" )` designates that `logo` is part of a specific
fetch
>> group. Now, when the application accesses `getTaxIdNumber()`, `logo`
is no
>> longer fetched at the same time.
>>
>> P.S. A related question is this idea of
>> `(a)LazyToOne(LazyToOneOption.NO_PROXY)`. At the moment that is still
needed
>> for "legacy reasons". The underlying reason is that we don't
(didn't)
know
>> when the to-one container is enhanced, so we rely on the user telling
us.
>> I'd like to plan on dropping the requirement for the user to tell us
this.
>> If they are using enhancement I am 99% certain they want NO_PROXY so it
>> seems redundant to make them tell us. Unless I am missing some use
case.
>> Any thoughts?
>>
>> [1] Technically the legacy bytecode enhancement treated collections
>> differently than other attribute types in this regard. The new
enhancement
>> does the same as the default.
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev