We have an application that has a similar requirement; caching catalog 
data to build a tree representation for the UI. This was an expensive hit 
for the user to pay. Rather than asking iBatis to cache the entire table, 
we let iBatis cache the results for each query. For the web UI, I simply 
built a dynamic cache mechanism using ehCache. We not only use it for the 
product catalog but also customer data as well as others. It builds caches 
based upon request parameters. For the Product Catalog, we cache the 
entire table. The cache is managed by Spring and is populated on 
application start-up by some simply looping logic that first the top level 
query and drills down from there. It is scheduled for refresh ever so many 
hours and can be invalidated using JConsole as we exposed the cache via 
JMX.. 

As far as external updates to the data within the database, depending upon 
what database you are using, you may have some options available. For 
example, both Oracle and Sybase ASE have the ability to send JMS messages 
to a Queue or Topic directly from SQL. So you could easily create a 
trigger on those tables that get updated, produce a message to a Topic 
telling about the update, and have you application consume the message and 
invalidate or refresh your cache.

For what you are asking for, you are going to need to build something to 
accomplish your task. While you can have iBatis cache your results for 
you, it simply is not going to fit your use case. 

Chris Mathrusse
christopher.mathru...@sybase.com
Sybase, Inc



From:
"Anindya Mukherjee" <anindya.mukher...@gmail.com>
To:
<user-java@ibatis.apache.org>
Date:
07/15/2009 09:34 PM
Subject:
RE: Force cache refresh + precaching



Hi all,

Thanks a lot for your replies. Actually our's is a web application that
makes a lot of AJAX calls to get this data. We want these call's to be as
fast as possible. A slight delay even for the first time might be an 
issue.

So we were thinking if there is a way to precache the whole table during 
app
start rather than having it on demand.

The problem with running the queries on app startup is , we have a lot of
data in the table. We could call the queries but that will be a lot of
call's. Also if the data changes we have to add/remove our queries. So if
there is a way of telling IBatis to precache the whole table it will be
really nice.

- Anindya

-----Original Message-----
From: Jeff Butler [mailto:jeffgbut...@gmail.com] 
Sent: July-16-09 2:15 AM
To: user-java@ibatis.apache.org
Subject: Re: Force cache refresh + precaching

Why not just execute the query in some startup process, this would
prime the cache?  In a web app you could do it in a context listener.
Easy.


Jeff Butler

On Wed, Jul 15, 2009 at 3:34 PM, Sundar Sankar<fatboys...@gmail.com> 
wrote:
> I havent implemented this particular case, but I wud have to suggest you
go
> with other technologies in conjunction, maybe comet or something like
that.
> Am not sure if hibernate / hibernate cache handles this case but i wud
look
> to check up with their dev team too.
>
> On Wed, Jul 15, 2009 at 1:25 PM, Vinaya Tirikkovalluru
> <vinaya.tirikkovall...@converge.com> wrote:
>>
>> Is there a specific reason why do you want to do that?
>>
>> Because, the first time you access the object, it will be created and
>> stored in cache
>>
>>
>>
>>
>>
>>
>>
>> ________________________________
>>
>> From: Anindya Mukherjee [mailto:anindya.mukher...@gmail.com]
>> Sent: Wednesday, July 15, 2009 3:28 PM
>>
>> To: user-java@ibatis.apache.org
>> Subject: RE: Force cache refresh + precaching
>>
>>
>>
>> Hi Vinaya,
>>
>>
>>
>> Thanks a lot for the help. I actually meant during app load ( when our
>> application is booting ).
>>
>>
>>
>> -          Anindya
>>
>>
>>
>> From: Vinaya Tirikkovalluru [mailto:vinaya.tirikkovall...@converge.com]
>> Sent: July-16-09 12:41 AM
>> To: user-java@ibatis.apache.org
>> Subject: RE: Force cache refresh + precaching
>>
>>
>>
>> Hi,
>>
>>
>>
>> What do you mean by before app load?
>>
>>
>>
>> To forcefully refresh the cache, you can use
>>
>>
>>
>> getSqlMapClient().flushDataCache("sqlmap.queryname");
>>
>>
>>
>> Vinaya
>>
>>
>>
>> ________________________________
>>
>> From: Anindya Mukherjee [mailto:anindya.mukher...@gmail.com]
>> Sent: Wednesday, July 15, 2009 3:06 PM
>> To: user-java@ibatis.apache.org
>> Cc: anindya.mukher...@gmail.com
>> Subject: Force cache refresh + precaching
>>
>>
>>
>> Hi ,
>>
>>
>>
>> We have started using iBatis caches. To start with we are using an LRU
>> cache. However we have an issue ,  the underlying tables in our db can 
be
>> updated by manual inserts ( it is a shared db used by a number of apps 
).
>>
>>
>>
>> Now we need a mechanism whereby we can forcefully refresh the iBatis
>> cache. Can anybody help us with this ? Also the ibatis caches are lazy
>> loading ( it loads on demand ) , is it possible to somehow precache 
some
>> data during app load.
>>
>>
>>
>> -          Thanks,
>>
>> -          Anindya
>>
>> ________________________________
>>
>> This electronic message is intended only for the use of the 
individual(s)
>> or entity(ies) named above and may contain information which is
privileged
>> and/or confidential. If you are not the intended recipient, be aware 
that
>> any disclosure, copying, distribution, dissemination or use of the
contents
>> of this message is prohibited. If you received this message in error,
please
>> notify the sender immediately.
>>
>> ________________________________
>> This electronic message is intended only for the use of the 
individual(s)
>> or entity(ies) named above and may contain information which is
privileged
>> and/or confidential. If you are not the intended recipient, be aware 
that
>> any disclosure, copying, distribution, dissemination or use of the
contents
>> of this message is prohibited. If you received this message in error,
please
>> notify the sender immediately.
>
>
> --
> Regards
> Sundar S.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
For additional commands, e-mail: user-java-h...@ibatis.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
For additional commands, e-mail: user-java-h...@ibatis.apache.org




Reply via email to