Hi James,
Did you try with another type of cache?
Although the SqlMaps documentation does not say anything about it, I had bad
experiences in the past with the WEAK reference types (outside of iBATIS)
and I did not check it again since that time (I was using JDK 1.3 then).
My concern was that all such references were EAGERLY garbage-collected (ie,
AS SOON AS there were no strong reference left to the object).
So you may run in the same kind of problem:
If you do not hold any strong reference to the objects got from the first
select execution, then it is possible that all your cached objects have been
garbage collected on the second select execution.
Try either to change to another model of cache (LRU for instance) or change
the reference-type to STRONG if you keep the MEMORY cache. I would not be
surprised if any of these changes solved your problem.
If I am right, then I am afraid you cannot do much to solve the problem if
you do want to keep the same cache settings.
For information, which JDK are you running?
Hope this helps
Cheers
Jean-Francois
-----Original Message-----
From: James, Steven [mailto:[EMAIL PROTECTED]
Sent: Tuesday, February 22, 2005 9:51 PM
To: [email protected]
Subject: RE: cacheModel still hitting database
Yes my settings are
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
maxSessions="64"
maxTransactions="8"
maxRequests="128"
/>
inmy sql.xml file cachemodel is set like this
<cacheModel id="tnodes-cache" type="MEMORY">
<flushInterval seconds= "360"/>
<flushOnExecute statement="insertNode"/>
<flushOnExecute statement="deleteNode"/>
<flushOnExecute statement="deleteAllNodes"/>
<flushOnExecute statement="updateNode"/>
<property name="size" value="1000"/>
<property name="reference-type" value="WEAK" />
</cacheModel>
and finally select element is like this
<select id="getNodeTypeByName" parameterClass="java.lang.String"
resultMap="resultNode" cacheModel="tnodes-cache">
<![CDATA[
select * from T_NODES where NAME = #name#
]]>
</select>
This looks to me like a case of muppititus but i can't see it yet..
Steve
-----Original Message-----
From: Mark Bennett [mailto:[EMAIL PROTECTED]
Sent: Tue 2/22/2005 1:44 PM
To: [email protected]; [EMAIL PROTECTED]
Subject: RE: cacheModel still hitting database
Yup, that was it thanks. Hey Steven, this may work for you too.
Mark
-----Original Message-----
From: Kris A. Jenkins [mailto:[EMAIL PROTECTED]
Sent: Monday, February 21, 2005 5:33 PM
To: [email protected]
Subject: Re: cacheModel still hitting database
Mark,
In your sql-map-config.xml, look at the 'settings'
attribute. Do you have 'cacheModelsEnabled="true"'
set?
Kris
--- Mark Bennett <[EMAIL PROTECTED]> wrote:
> I'm trying to get the cacheModel working, but it
> keeps hitting the database.
> This is just an example so please ignore the
> context.
>
> I'm using iBatis-2 and this setup returns the data
> properly. I get no
> errors. This is run through a web container and not
> a unit test so the
> cache should persist. The query object is an
> Integer so it should hash the
> same each time. However, whenever I cange the data
> in the databse, the
> change shows up on the page. Any advice? Thanks.
>
> Mark
>
>
> <cacheModel id="drugScreenCache" type="LRU"
> readOnly="true"
> serialize="false">
> <flushInterval hours="12"/>
> <property name="cache-size" value="500"/>
> </cacheModel>
>
> <resultMap id="drugScreenListResult"
> class="drugScreen">
> <result property="id" column="ACTID"/>
> <result property="testDate" column="TESTDATE"/>
> </resultMap>
>
> <select id="getDrugScreenListByJuvenile"
> resultMap="drugScreenListResult"
> cacheModel="drugScreenCache">
> SELECT *
> FROM drugscreen
> WHERE rsrcid = #value#
> ORDER by TESTDATE DESC
> </select>
>
>
>
___________________________________________________________
ALL-NEW Yahoo! Messenger - all new features - even more fun!
http://uk.messenger.yahoo.com
This e-mail and any attachment is for authorised use by the intended
recipient(s) only. It may contain proprietary material, confidential
information and/or be subject to legal privilege. It should not be copied,
disclosed to, retained or used by, any other party. If you are not an
intended recipient then please promptly delete this e-mail and any
attachment and all copies and inform the sender. Thank you.