2013年5月25日土曜日

mybatis ローカルキャッシュ

MyBatisで、同一トランザクション内で同じシーケンスから値を2回取得する
ようなコードを書くと、同じ値が返されてしまう。サンプルはこんな感じ。
<select id="nextId" resultType="Long">
    select nextval( #{name} ) as value
</select> 
 
以下のようにflushCache="true"を付けると、ローカルキャッシュがクリア
されるようで、2回目の取得処理でもSQLが実行され違う値が取得できる。
<select id="nextId" resultType="Long" flushCache="true">
      select nextval( #{name} ) as value
</select>
 
別にシーケンスに限ったことではなく、通常のSELECTのSQLでも
同じ動作になるみたい。
 

0 件のコメント: