[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 メーリングリストの案内