[infinispan-dev] [ISPN-31]JPA based cache store

Manik Surtani manik at jboss.org
Tue Jul 28 04:50:01 EDT 2009


On 27 Jul 2009, at 18:29, Jason T. Greene wrote:

> Jason T. Greene wrote:
>> Manik Surtani wrote:
>>> On 23 Jul 2009, at 15:34, Alejandro Montenegro wrote:
>>>
>>>> Hi guys,
>>>> some thought about this issue. Mainly there are two option for  
>>>> the  implementation:
>>>>
>>>> 1- Objects stored in cache are by themselves Entites (marked with  
>>>> an  @Entity)
>>>>
>>>> 2- Create a kind of wrapper Entity for non-entities objects
>>>>
>>>> [1] Are more straight forward and should perform better, but are   
>>>> restricted to Enities
>>>> [2] Are more complex to develop, as have to figure out a good   
>>>> structure fot the wrapper, but satifies a lot of more use cases.
>>>
>>> I think we can offer both.  The cache store could maintain two  
>>> hash  sets - known @Entity types and known types that are not  
>>> entities.   These would be populated lazily by testing for the  
>>> @Entity annotation  every time a new user type is encountered.   
>>> These sets could then be  consulted when deciding how to persist  
>>> an object: either treat it as a  an @Entity or wrap it in an  
>>> EntityContainer.
>>>
>>> The structure of an EntityContainer should be pretty  
>>> straightforward,  where it would contain two fields: a byte[] to  
>>> hold the serialized  form of the object being stored, and an ID  
>>> which could be an auto  incrementing key.
>> You don't want a byte array because then you can't compare fields.  
>> I don't think there really is a big different between @Entity or  
>> not @Entity in a infinispan implementation. In both cases you need  
>> to reflectively discover the structure of the object, discover  
>> references, and store the primitive and serialiable fields that  
>> make up the object.
>> If EJB3 SFSB replication is rewritten to use this, the objects  
>> definitely will not be @Entity :)
>
> OOPS I just realized this is about a JPA cache store, not the JPA- 
> like POJO API Sorry! :)

NP.

Although I can see things getting a bit weird if folks use the JPA- 
like API, along with a configured JPA cache store.  That would  
probably be a combination we don't support, although we could since  
the JPA-like API would slice objects up into primitives.  Just that  
folks won't see what they expect in their DB if they browse through it  
manually.  :)

Cheers
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list