[Seasar-user:15447] S2JDBCのjdbcManagerでSQLを実行する直前でSQL文を取得できないか(SQL文をクエリキャッシュのID値にしたいから)
渡辺 祐
[E-MAIL ADDRESS DELETED]
2008年 8月 21日 (木) 15:21:42 JST
渡辺と申します。
よくあるWebアプリをSeasar2+SAStruts+s2jdbcで作っています。
アクセスがピーク時にDB検索が走りすぎてDBサーバが過負荷にならないように
汎用的なキャッシュ機構を作りこみたいと思ってます。
キャッシュサーバはmemcachedを使おうかなと。
----- 仮想のソース -----
String cacheid = "なんか一意なID値";
Employee result = null;
HogeHogeCacheManager cacheManager = new CacheManagerFactory().getInstance();
result = cacheManager.getcache();
if (null == result) {
result = jdbcManager.from(Employee.class)
.where("foo = ? and bar = ?", fooval, barval)
.getSingleResult();
}
----- 仮想のソース -----
上記の例で言えば、
String cacheid = fooval + barval;
にでもしてしまえば用が足りるといえば足りるのですが、
よりシンプルで汎用的なDBクエリーキャッシュ機構としたいです。
そこで、できれば、SQLを実行してしまう前にそのSQL文そのものを
取得できればそれをキャッシュidにできるので一番いいなと考えてます。
s2jdbcでは発行されたSQL文そのものをログに吐くことができるので、
それの応用でどうにかしたいのですが、なにか良い知恵はないでしょうか?
jdbcManagerの実装上難しいのかなあ、、、?
Seasar-user メーリングリストの案内