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