[infinispan-dev] [ISPN-6] (Infinispan cache provider for Hibernate) Remaining TODOs, notes and questions

Brian Stansberry brian.stansberry at redhat.com
Tue Aug 4 12:23:33 EDT 2009


Got distracted and hit send early last time...

Brian Stansberry wrote:
> Manik Surtani wrote:
>>
>> On 4 Aug 2009, at 14:02, Galder Zamarreno wrote:
>>
>>>>
>>>> s/region.ispn4/infinispan
>>>
>>> Ok.
>>>
>>> One thing here though. Chris's original solution works in such way 
>>> that for each entity/collection, a new cache is retrieved from the 
>>> cache manager using the region name, so for this example 3 caches 
>>> would be created:
>>>
>>> Cache1 for 
>>> [org.hibernate.test.cache.infinispan.functional.VersionedItem]
>>> Cache2 for [org.hibernate.test.cache.infinispan.functional.Item]
>>> Cache2 for [org.hibernate.test.cache.infinispan.functional.Item.items]
>>>
>>> Can we confirm this is the intented way? In 
>>> https://jira.jboss.org/jira/browse/ISPN-6 the following is mentioned:
>>>
>>> "Use a separate named cache per entity. This cache would hold entity 
>>> instances as well as collections pertaining to that entity."
>>>

In the JBC2 integration, the JBC Region is pretty important, beyond 
eviction.  There are things like clear operations that are scoped to the 
Region (e.g. to support invalidating all entities of a given type out of 
the cache).  The Infinispan integration will have the same use cases, 
and AIUI a cache is the semi-analogue to a JBC Region, so I think you 
need a cache per entity type.

Also, unless there's a really good reason not too, let's try to keep 
things logically the same between the Infinispan and JBC integrations. 
Makes maintenance much easier.

>>> So, if that is followed and we bear in mind the above example, there 
>>> should only be 2 cache instances created rather than the current 3.
>>>
>>> What is clear is that there's no need for 
>>> hibernate.cache.infinispan.cfg.entity or 
>>> hibernate.cache.region.ispn4.cfg.collection. Simply stick the default 
>>> cache configuration for entity/collections in the default section of 
>>> configuration.
>>>
> 
> Yeah, I've never found a good use case for using different configs for 
> the two. Perhaps eviction
> 
>>> I don't we need hibernate.cache.infinispan.cfg.query and 
>>> hibernate.cache.infinispan.cfg.timestamps either since we can simply 
>>> name the caches with the corresponding region names 
>>> (org.hibernate.cache.UpdateTimestampsCache]and 
>>> org.hibernate.cache.StandardQueryCache) and that's it.
>>
> 
> The hibernate.cache.infinispan.cfg.query and 
> hibernate.cache.infinispan.cfg.timestamps properties aren't used to name 
> the caches. They specify what config to use.
> 
>> I suppose that would depend on the need for different eviction 
>> characteristics for different entity types.  So from that perspective 
>> (the ability to use) a different cache per entity is useful.
>>
>> E.g.,
>>
>> NoEvictionCache for [CountryList]
>> NoEvictionCache for [SomeOtherDropDown]
>> AggressivelyEvictedLRUCache for [Users]
>> AggressivelyEvictedLRUCache for [Orders]
>> LargeCapacityFIFOCache for [ProductsCatalog]
>>
>> etc. may well prove useful. 
>> Brian/Steve - care to chime in?
> 
> hehe, I kinda just somewhat did on another branch of the thread. W/ JBC, 
> different eviction per entity type could be configured via the JBC 
> config, using eviction regions. Seems we've lost that, unless 
> SessionFactory properties are added that tell the RegionFactory what 
> Infinispan config to use on a more fine-grained basis than "entity", 
> "collection", "query", "timestamp". This could perhaps be done by using 
> "entity", "query" as default values and allowing replacement/extension 
> to override the default for a particular region name.
> 
> hibernate.cache.infinispan.CountryList.cfg=NoEvictionCache
> 
> The ugly bit is that works if people configure a region name for their 
> entities, rather than using the default fully qualified class name. I 
> suppose the fully qualified class name could work as well, just a bit 
> more parsing.
> 
>>
>> Cheers
>> -- 
>> Manik Surtani
>> manik at jboss.org <mailto:manik at jboss.org>
>> Lead, Infinispan
>> Lead, JBoss Cache
>> http://www.infinispan.org
>> http://www.jbosscache.org
>>
>>
>>
>>
> 
> 


-- 
Brian Stansberry
Lead, AS Clustering
JBoss by Red Hat



More information about the infinispan-dev mailing list