[infinispan-dev] Query API, JPA and a fine-grained model

Manik Surtani manik at jboss.org
Tue May 12 05:27:19 EDT 2009


So the plan is that we would implement a new fine-grained model to  
replace POJO Cache.  Rather than AOP, we would use a JPA-like session- 
style interface where we can track changes made to state in a session  
to detect field changes [1].  This hugely simplifies the  
implementation and makes things more robust, plus provides people with  
a familiar JPA API to use.

Now considering the query API, if we are already providing a JPA  
interface, this is another reason for the query API to support JPA-QL  
rather than just Lucene queries.

The other reason, of course, is easy migration off using databases for  
persistence to using a data grid for persistence [2].  Now, naturally,  
the designs outlined in [2] can easily be achieved using Hibernate and  
a good distributed cache, but what happens when you don't actually  
want to persist your data at all, just want it to live in a grid  
(because you think your grid is "good enough" to not be unavailable,  
and/or your data is transient or can be recalculated), but you still  
want to use a JPA interface because either you are more familiar with  
it, or you started off storing this state in JPA and are now  
rethinking your persistence needs but don't want to rewrite your app.

Of course, supporting JPA-QL in a distributed cache query API is not  
trivial.  We know we can do this fairly easily with Lucene queries.   
Does anyone know of a mechanism to translate between these easily  
enough?  If need be, this is something we could build.  JPA-QL grammar  
is finite and an ANTLR [3] definition to translate these to Lucene  
query objects shouldn't be too hard ...

Thoughts?
Manik

[1] http://www.jboss.org/community/wiki/NewFineGrainedReplicationAPIDesign
[2] http://web2.sys-con.com/node/951117
[3] http://www.antlr.org/
--
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