ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "agharta (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Commented: (IBATIS-182) Add global cache declaration
Date Sat, 13 Aug 2005 06:30:54 GMT
    [ http://issues.apache.org/jira/browse/IBATIS-182?page=comments#action_12318696 ] 

agharta commented on IBATIS-182:

Thanks for reply Ron!

Your is a great idea, but....you are not able to extend a cache model flush declaration to
many sqlmaps:
<sqlMap namespace="CacheModels">
   <cacheModel id="UserCache" implementation="MEMORY">
    <property name="Type" value="Strong" />
    <flushInterval hours="2" />
    <flushOnExecute statement="User.Insert" />
    <flushOnExecute statement="User.Update" />
    <flushOnExecute statement="User.Delete" />

In this way you are constraint to declare many <flushOnExecute>, i'll suggest it (if
this is not a bad idea)

<sqlMap namespace="CacheModels">
   <cacheModel id="GlobalCache" implementation="MEMORY">
    <property name="Type" value="Strong" />
    <flushInterval hours="2" />
    <flushOnExecute statement="Insert*" />
    <flushOnExecute statement="Update*" />
    <flushOnExecute statement="Delete*" />

So, if in your sqlmaps files (State.xml, User.xml, etc..) there are one or many strements
that starts with "Insert" or "Update" or "Delete", the cache model apply the cache control.
(only if the cache model is called by statement)

I agree your idea about sqlMapConfig: it should try to remain as small as possible.

Please post your comments.


> Add global cache declaration
> ----------------------------
>          Key: IBATIS-182
>          URL: http://issues.apache.org/jira/browse/IBATIS-182
>      Project: iBatis for Java
>         Type: New Feature
>   Components: SQL Maps
>     Versions: 2.2.0, 2.2.5
>  Environment: All
>     Reporter: agharta

> Can i suggest a new feature??
> I suggest a global cache declaration, available for many sqlmap files.
> Example:
> Now,  into a sqlMap file:
> <cacheModel id="cache" readOnly="true" serialize="true" type="LRU">
>         <flushOnExecute statement="Author.insertAuthor"/>
>         <flushOnExecute statement="Author.updateAuthorById"/>
>         <flushOnExecute statement="Author.deleteAuthorById"/>
>         <property name="size" value="100000"/>
>         <flushInterval hours="24"/>
> </cacheModel>  
> Ok? This cache is valid only into this sqlmap file.
> So, following Spring's idea, if i have many sqlmap files and i want to extend the same
cache declaration....
> //into sqlMapConfig file or another dedicated file
> <cacheMap namespace="GlobalCache"> //new definition
>     <cacheModel id="cache" readOnly="true" serialize="true" type="LRU">
>         <flushOnExecute statement="insert*"/>
>         <flushOnExecute statement="update*"/>
>         <flushOnExecute statement="delete*"/>
>         <property name="size" value="100000"/>
>         <flushInterval hours="24"/>
>     </cacheModel>  
> </cacheMap>
> So, the sqlMap call the global cache model with the  useStatementNamespaces="true" setted
into sqlmapconfig file (therefore many global cache are availables)
> <statement id="getAuthorById" parameterClass="java.lang.Integer"
>         resultMap="get-author-result" cacheModel="GlobalCache.cache" >
>         <include refid="select"/>
>         WHERE ID = #value#
>  </statement>
> With this feature we'll save a lot of redundant code.
> I suggest a cache definition also into insert/update/delete statements, to allow the
internal or "global" cache selection.
> Is it possible??
> Thanks a lot for reply!
> Regards,
>                       Agharta

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message