ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clinton Begin <clinton.be...@gmail.com>
Subject Re: SQLMap and OSCACHE unwanted behavior with hierarchy of objects.
Date Fri, 22 Apr 2005 22:46:36 GMT
Do I understand correctly....

The first row is the category, the next 20 rows are sub-categories? 
In other words, a parent child relationship described as peers in the
result set?

Correct?

Clinton


On 4/21/05, erlend.bjorge@aftenposten.no <erlend.bjorge@aftenposten.no> wrote:
>  
> Hi there! 
>   
> Today I introduced OSCACHE in our SQLMap application, what a performace
> boost! :-) 
>   
> I have some heavy queries, doing a lot of stuff, some is' pretty static, so
> bringing 
> in the cache is a nice feature. 
>   
> Anyway I have discovered something realy strange I think, not sure where the
> "error" or 
> smart behavior is located, it's most unwanted since I have to write extra
> code to avoid it! 
>   
> I'm working with hierarchy of categories, pointing to itself. The
> CategoryBean is 
> one of our value/transfer objects. 
>   
> -- 
>   
> public class CategoryBean extends GeneralBean implements Serializable { 
>   
>     private List subCategories;     // List of CategoryBean's .... 
>     .. 
>   
> } 
>   
> ---- 
>   
> So what I do, I query the database to retrieve two levels of the hierarchy
> in a Oracle 
> database, returning 21 rows, where the first row is the root. 
>   
> After the rows are returned from this query: 
>   
> list =
> Collections.synchronizedList(sqlMap.queryForList("retrieveFirstPageCategories",
> null)); 
>   
>               (Have tried with/without synchronized to see if that helped =
> NOT :) 
>   
> The query using this cache: 
>   
>     <cacheModel id="category-cache" type="OSCACHE">
>         <flushInterval hours="1"/>
>         <flushOnExecute statement="insertCategory"/>
>         <flushOnExecute statement="updateCategory"/>
>     </cacheModel>
>  
> -- 
>   
> I create the rootBean of the first row in the list, then add the other 20
> rows to the subCategories. 
>   
> So far so good, BUT when I run the query twice or more when the OSCACHE is
> up and running 
> (sqlMap has returned the connection to the pool between the runs) .... I
> still get 21 rows from 
> the same query back, BUT now the first one in the list (the rootBean)
> already have those 20 subCategories 
> listed, I added in the first run ! That's impressive :-) but most unwanted
> behavior since  I have to write extra 
> code to not add those 20 rows again = 40 subCategories... Of course after 3
> runs, 60 subCategories etc. 
>   
> How can I avoid this "smart" behavior ??? hmm Is it a bug ? I guess not,
> something 
> to tune in SQLMap, OSCACHE ? or ? hmmm Some guy here mention something about
> adding the hashCode() and equals() to my CategoryBean ... is that the rigth
> path to go ? 
> He have already added the hashCode and equals, but a "simple" logic ...
> what's requried 
> to avoid this smart behavior ? 
>   
>   
> Thanks for any help! 
>   
>   
> Best regards, 
> Erlend Bjørge

Mime
View raw message