Let me see if I understand this correctly...

I get a list object back from a call to executeQueryForList(). I have
caching enabled in ibatis, so ibatis caches the list, or a reference to it.
As long as the cache has not been flushed, if I make another call to the
same mapped statement using executeQueryForList(), it returns the same list,
not a separate copy of the list but the same one as before.

I then modify the contents of this list, but nothing has been updated in the
database yet. Another user logs into the system and calls that same mapped
statement. He will get the list that has the modifications made by the first
user, even though nothing has been updated in the database. Is this correct?
I think this is the behavior I'm seeing.

So, what is best practice to avoid this? Should I make deep copies of all
objects returned from ibatis if I am using caching? What are my options?

Thanks,
Brian Barnett

Reply via email to