[hibernate-dev] Hibernate.getImplementation(Object)

Max Rydahl Andersen max.andersen at redhat.com
Thu May 24 10:57:56 EDT 2007


> This is what I want to return one way or an other... or CGLIB should  
> fill up the superclass fields.

I don't understand ;)

The parameter to Hibernate.initialize(x) is the *entity* right, not a  
*value* of that object ?

And field access etc. works on that object.

ClassMetaData.getPropertyValue(x, "propertyName") would give you the value  
(at least after
initialize(x) have been called)

No reason for magical impl detail api afaik.

/max

> On 24 mai 07, at 01:02, Max Rydahl Andersen wrote:
>
>> afaik ( ( HibernateProxy ) value ).getHibernateLazyInitializer 
>> ().getImplementation() haven't changed almost since beginning of times.
>>
>> But exposing it on the Hibernate class API would be wrong IMO since the  
>> return value would be the underlying object instead of the proxy, or
>> do I misunderstand what you want it to return ?
>>
>> /max
>>
>>> 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
>>>
>>
>>
>>
>> ----
>> 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
>



-- 
--
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