[Seasar-user:15450] Re: S2JDBCのjdbcManagerでSQLを実行する直前でSQL文を取得できないか(SQL文をクエリキャッシュのID値にしたいから)
渡辺 祐
[E-MAIL ADDRESS DELETED]
2008年 8月 21日 (木) 15:40:08 JST
ちょっと仮想ソースを間違えてましたので再送です。
----- 仮想のソース -----
String cacheid = "なんか一意なID値";
Employee result = null;
HogeHogeCacheManager cacheManager = new CacheManagerFactory().getInstance();
result = cacheManager.getcache(cacheid);
if (null == result) {
result = jdbcManager.from(Employee.class)
.where("foo = ? and bar = ?", fooval, barval)
.getSingleResult();
}
----- 仮想のソース -----
>Date: Thu, 21 Aug 2008 15:21:42 +0900
>From: 渡辺 祐 <[E-MAIL ADDRESS DELETED]>
>To: [E-MAIL ADDRESS DELETED]
>Cc:
>Subject: S2JDBCのjdbcManagerでSQLを実行する直前でSQL文を取得できないか(SQL
> 文をクエリキャッシュのID値にしたいから)
>
>渡辺と申します。
>
>よくある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 メーリングリストの案内