2waySQLのパース結果のキャッシュ

性能改善のために、一度パースした2waySQLのパース結果をキャッシュできるようにしてみました。
Mirageを単体で使う場合はjdbc.propertiesでsql.cacheプロパティにtrueを設定します。

jdbc.url=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1
jdbc.driver=org.h2.Driver
jdbc.user=sa
jdbc.password=
sql.cache=true

DIコンテナなどと組み合わせて利用する場合はSqlManagerImplのsetCacheMode()メソッドに何らかの方法でtrueを設定します。たとえばSpringだったらこんな感じ。

<bean id="sqlManager" class="jp.sf.amateras.mirage.SqlManagerImpl">
  <property name="connectionProvider" ref="connectionProvider" />
  <property name="dialect" ref="dialect" />
  <property name="cacheMode" value="true" />
</bean>

あと、ちょっとしたことですが、Oracleのヒントコメントを使えるようにしてみました。いままでは2waySQLに記述されたコメントは全て切り捨てて実行していたのですが、ヒントコメントだった場合はそのまま出力するように変更しています。もしかしたらヒントコメントに限定せず、2waySQL用のコメント以外はそのまま出力するようにしたほうがいいのかも…。