- PR -

iBatisのキャッシュの設定について。

1
投稿者投稿内容
sirouto
ベテラン
会議室デビュー日: 2004/11/05
投稿数: 50
投稿日時: 2007-11-27 22:18
いつも参考にさせて頂いております。m(__)m

今回iBatisを使用してJAVAを開発しております。
プログラムは完成しているのですが、少しでも性能を向上させたいと思いiBatisのキャッシュの設定を行おうとしているのですが、エラーが出て思うように設定できません。
どなたかご存知の方がおられましたら宜しくお願い致します。

・現在のsqlMapCinfig.xmlの設定
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="256"
maxSessions="128"
maxTransactions="16"
useStatementNamespaces="false"
defaultStatementTimeout="20"
statementCachingEnabled="true"
classInfoCacheEnabled="true"
/>


<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@111.222.333.6444:1521:oracle"/>
<property name="JDBC.Username" value="oracle"/>
<property name="JDBC.Password" value="oracle"/>
<property name="JDBC.DefaultAutoCommit" value="false"/>

<property name="Pool.MaximumActiveConnections" value="20"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="20000"/>
<property name="Pool.TimeToWait" value="20000"/>
<property name="Pool.PingEnabled" value="false"/>
</dataSource>
</transactionManager>

<sqlMap resource="aa/bb/cc/sqlMap.xml" />

</sqlMapConfig>

・現在のsqlmap.xmlのキャッシュの設定
<cacheModel id="product-cache" type="MEMORY">
<flushInterval hours="24"/>
<property name="reference-type" value="WEAK" />
</cacheModel>

<select id="1234" parameterClass="java.util.HashMap" resultMap="1234" cacheModel="product-cache">

以上の様な設定で動作は確認しております。


質問1
上記設定でキャッシュ機能は動作しているのでしょうか?


質問2
iBatisのマニュアルやその他ネットではキャッシュの設定が以下の様な設定になっているものが多いです。
<cacheModel id="product-cache" type="MEMORY">
<flushInterval hours="24"/>
<flushOnExecute statement="insertProduct"/>
<flushOnExecute statement="updateProduct"/>
<flushOnExecute statement="deleteProduct"/>
<property name=”reference-type” value=”WEAK” />
</cacheModel>

<flushOnExecute statement="insertProduct"/>
<flushOnExecute statement="updateProduct"/>
<flushOnExecute statement="deleteProduct"/>
を設定してJAVAを実行するとiBatisでDBアクセスする際に「java.lang.NullPointerException」のエラーが発生してしまいます。

<flushOnExecute statement="insertProduct"/>
<flushOnExecute statement="updateProduct"/>
<flushOnExecute statement="deleteProduct"/>
を設定しない場合はエラーが出ずにきちんと処理が行えます。

プログラムや環境はまったく同じ状態です。
<flushOnExecute statement="insertProduct"/>
<flushOnExecute statement="updateProduct"/>
<flushOnExecute statement="deleteProduct"/>
の有無でエラーになったりしてしまいます。
原因がお分かりになられる方、どうかご教授お願い致します。

<flushOnExecute statement="xxxxxx"/>
が設定しなくても特に問題ないのでしたら、設定しない状態でいこうと思います。

サーバのメモリもあまり余裕がある環境ではないので、キャッシュモードは
<cacheModel id="product-cache" type="MEMORY">でいこうと考えております。


以上です、宜しくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)