[hibernate-dev] Hibernate.getImplementation(Object)

Emmanuel Bernard emmanuel at hibernate.org
Wed May 23 20:25:41 EDT 2007


I know that Max :)
I do not expose it to the user, it's just how HSearch internally deal  
with it during the transparent indexation process, so I do not break  
the == operation from a user point of view. Note that we expose that  
to the user anyway through load/initialize/get, I'm just begging for  
a facilitator.
Currently my code is fairly weak, since Steve can refactor anytime   
LazyInitializer using an AST parser and a maven POM approach,  
because... you know ;-)
I'm fine is we consider HibernateProxy and LazyInitializer as public  
APIs but it's not the case today, or at least I'm fine if we define  
an extended contract between Search and Core so that it won't break  
between micro versions.

On 23 mai 07, at 19:24, Max Rydahl Andersen wrote:

> why are you ever in need of touching the field values directly ?
>
> Accessing and potentially exposing the underlying object of a  
> proxied entity should be strictly prohibted
> since otherwise you easily end up with breaking ==
>
> /max
>
>> For Hibernate Search I came to a problem.
>> When a user choose field access.
>> When I access a previously uninitialized object, and even if I  
>> initialize it (Hibernate.initialize()).
>>
>> The field access End up returning null all the time because of the  
>> way lazy loading is done. I worked around that using some of the  
>> code from Hibernate.initialize()
>>
>> 		if ( value instanceof HibernateProxy ) {
>> 			value = ( ( HibernateProxy ) value ).getHibernateLazyInitializer()
>> 					.getImplementation();
>> 		}
>>
>> But it seems it really should be part of the Hibernate class  
>> contract.
>>
>> I could use
>>
>> 		Hibernate.initialize(value);
>> 		value = session.get( Hibernate.getClass(value),  
>> session.getIdentifier(value) );
>>
>> but at the present time, it's hard for me to access the session,  
>> and conceptually speaking there is no real need for it.
>>
>> How about exposing this service in Hibernate class either
>>
>> 		value = Hibernate.initialize(value); //changing the return value
>> or
>> 		value = Hibernate.getImplementation(value);
>>
>> WDYT?
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
>
>
> -- 
> --
> Max Rydahl Andersen
> callto://max.rydahl.andersen
>
> Hibernate
> max at hibernate.org
> http://hibernate.org
>
> JBoss a division of Red Hat
> max.andersen at jboss.com




More information about the hibernate-dev mailing list