From dev-return-11532-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Tue Apr 21 04:28:29 2009 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 64884 invoked from network); 21 Apr 2009 04:28:29 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 21 Apr 2009 04:28:29 -0000 Received: (qmail 12919 invoked by uid 500); 21 Apr 2009 04:28:29 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 12834 invoked by uid 500); 21 Apr 2009 04:28:29 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 12824 invoked by uid 99); 21 Apr 2009 04:28:29 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Apr 2009 04:28:29 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of lists+1214986235816-210739@n2.nabble.com designates 216.139.236.158 as permitted sender) Received: from [216.139.236.158] (HELO kuber.nabble.com) (216.139.236.158) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Apr 2009 04:28:20 +0000 Received: from tervel.nabble.com ([192.168.236.150]) by kuber.nabble.com with esmtp (Exim 4.63) (envelope-from ) id 1Lw7aS-0004vw-1M for dev@openjpa.apache.org; Mon, 20 Apr 2009 21:28:00 -0700 Message-ID: <1240288080036-2668021.post@n2.nabble.com> Date: Mon, 20 Apr 2009 21:28:00 -0700 (PDT) From: rpalache To: dev@openjpa.apache.org Subject: Re: 0penJPA QueryCaching In-Reply-To: <1240245250957-2664742.post@n2.nabble.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Nabble-From: ravi.palacherla@oracle.com References: <1240003332506-2653013.post@n2.nabble.com> <1240197427813-2661607.post@n2.nabble.com> <1240245250957-2664742.post@n2.nabble.com> X-Virus-Checked: Checked by ClamAV on apache.org Hi, Did you get a chance to go through the link I pasted in previous reply: http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_cache_query ? I this openJPA is already doing what ever you are trying to do. So, you do not need to do anything in your application. You can turn on debugging and see if the call is going to database or the results are returned from cache. Regards, Ravi. ArjunReddy wrote: > > Hi Ravi, > > Thanks a lot for replying. I tried doing what you have suggested. > > This is what I have done. > > final String queryString = "select P from Parents P"; > javax.persistence.Query query = > getEntityManager().createQuery(queryString); > > QueryResultCacheImpl qcache = (QueryResultCacheImpl) > (OpenJPAPersistence.cast(EntityManager.getEntityManagerFactory())).getQueryResultCache(); > // I have casted to QueryResultCacheImpl because > QueryResultCache.getDelegate() is deprecated and the API suggets using > QueryResultCacheImpl. > > qcache.pin(query); //Pinning the query results to the cache > > ConcurrentQueryCache cqc = (ConcurrentQueryCache)qcache.getDelegate(); > CacheMap cmap = cqc.getCacheMap(); > > Iterator it = cmap.keySet().iterator(); //cmap.getPinnedKeys() is also > returning the same result. > > while(it.hasNext()) > { > System.out.println(it.next()); > } > > > And this is the result I got: > > org.apache.openjpa.datacache.QueryKey@28b16efe[query:[select P from > Parents P],access > path:[com.xyz.Parents],subs:true,ignoreChanges:false,startRange:0,endRange:9223372036854775807,timeout:-1] > > > It's returning back the query instead of the query results.:-( I just want > to be able to put my query results (Instances of the Parents Class which > are rows of the Parents table in the database) into the cache and retrieve > it back and see if I am getting them right. Any suggestions as what I > should be doing? Do I have to do something with the DataCache? I have > these defined in my persistence.xml file. > > > > > > Also in my Parents table, I have DataCache defined as follows. > > @Entity > @DataCache > @Table(name = "PARENTS", schema = "SYSTEM") > public class Parents implements java.io.Serializable { > > ... > ... > > } > > > Thanks. > > > > rpalache wrote: >> >> Hi Arjun, >> >>>> I am trying to cache the query results generated and later on use the >>>> results from the cache instead of touching the database. >> >> I think if you enable the querycache properly then openJPA has to do it >> for you. >> >> Check this link which explains the same: >> http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_cache_query >> >> To enable query cache add the following in the persistence.xml: >> >> >> >> >> >> I hope that answers your question. >> >> If not, and you are still looking to get a key then may be the following >> will help: >> >> CacheMap cmap = >> ((ConcurrentQueryCache)(OpenJPAPersistence.cast(EntityManager.getEntityManagerFactory()).getQueryResultCache().getDelegate())).getCacheMap(); >> >> The above will give you a map and MAY be cmap.keySet() or >> cmap.getPinnedKeys() should give you set of keys. >> >> Regards, >> Ravi. >> >> >> >> >> >> ArjunReddy wrote: >>> >>> Hi All, >>> >>> I am trying to cache the query results generated and later on use the >>> results from the cache instead of touching the database. >>> >>> This is what I am doing to put/get the values from the cache. >>> >>> >>> ********** >>> final String queryString = "select P from Parents P"; >>> Query query = getEntityManager().createQuery(queryString); >>> >>> OpenJPAEntityManagerFactory oemf = >>> OpenJPAPersistence.cast(EntityManagerHelper.getEmf()); >>> QueryResultCacheImpl queryResultCache = >>> (QueryResultCacheImpl)oemf.getQueryResultCache(); >>> QueryCache qCache = queryResultCache.getDelegate(); >>> >>> qCache.put(key, (QueryResult)query.getResultList()); // Put into the >>> cache >>> QueryResult cachedItems = qCache.get(key); // Get from the cache >>> >>> ********** >>> >>> >>> The thing I don't understand is how do I get the QueryKey (Referred to >>> as key here in my code) ? >>> >>> I tried doing this >>> QueryKey key = QueryKey.newInstance(q); but the q here in this line of >>> code is supposed to be of type org.apache.openjpa.kernel.Query? >>> >>> >>> >>> Can anybody help me with this please? >>> >>> Thanks. >>> >>> >> >> > > -- View this message in context: http://n2.nabble.com/0penJPA-QueryCaching-tp2653013p2668021.html Sent from the OpenJPA Developers mailing list archive at Nabble.com.