Java Reference
In-Depth Information
<flushOnExecute>
The <flushOnExecute> tag has a single attribute, statement , and allows for a cache
flush to be triggered upon the execution of a particular mapped statement. This
is useful when you have results that should be updated when a change is made to
the underlying database. For example, if you have a cache containing a list of Cat-
egories, you could use <flushOnExecute> to flush the cache whenever a new Cate-
gory is inserted.
As stated earlier, the cache will be entirely flushed, and therefore you should
take care to avoid creating mapped statement flushing dependencies with con-
stantly changing data. This could effectively render your cache useless because of
the high rate of flushing and populating the cache. Listing 9.2 defines a cache
model and shows an example of how to use the <flushOnExecute> tag to invali-
date the cache when new data is added to the database.
Listing 9.2
flushOnExecute caching example
<sqlMap namespace="Category">
<cacheModel id="categoryCache" type="MEMORY">
<flushOnExecute statement="Category.insert"/>
</cacheModel>
<select
id="getCategory" parameterClass="Category"
resultClass="Category" cacheModel="categoryCache">
SELECT *
FROM Category
WHERE parentCategoryId=#categoryId#
</select>
<insert id="insert" parameterClass="Category" >
INSERT INTO Category
(title,description,sequence)
VALUES
(#title#,#description#,#sequence#)
</insert>
</sqlMap>
To use the <flushOnExecute> tag, you need to specify the statement name, using
the statement attribute, which should trigger the cache flush. If the statement is
contained within a sqlMap that uses a namespace attribute, you must specify the full
Search WWH ::




Custom Search