[seasar-s2dao-dev:401] Re: [Seasar-user:9751] Re:[S2Pager]拡張PagerCondition使用時にSQLException

Jundo Ishikawa [E-MAIL ADDRESS DELETED]
2007年 8月 8日 (水) 23:16:33 JST


JUNDUです。

07/08/08 に Toshihiro Nakamura<[E-MAIL ADDRESS DELETED]> さんは書きました:
>
> > ちょっと気になったのは、前の実装からだと思うのですが、Factoryの内部で
> > オープンしたPreparedStatementって閉じてないのですね。ResultSetを表に返す
> > 必要があるので、こういう作りなのだと思いますが。。。
>
> AbstractPagerResultSetFactoryにわたってくる
> PreparedStatementって(ほとんど)使われないんですね。
> ふと思ったのですが、
> ResultSetFactoryでいろいろするよりも
> StatementFactoryで最初からページング用のPreparedStatement
> を作成することができるのではないでしょうか?

 試しにやってみました。Oracle上でテスト見てみましたが、やれそうです。
ただ、SQLを書き換えないパターンと設定のイメージが変わってしまうので、
前の実装は、ああいう作りだったのかもしれません。

> いまって、ログには出るけど実際には実行されないSQLがありますよね。
> これを防げるし、closeしないPreparedStatementもなくなる
> ように見えました。

 ここは、ログを出力するタイミングとStatementを取るタイミングの関係で、
出ちゃう見たいです。逆に書き換え後の条件追加したSQLは、同じ仕組みで出力
するのが面倒な感じです。BasicHandlerを継承してログ出力だけさせるのも不毛
ですし。。。

 ともあれ、ここまで色々考えてみて、悩み事が出てきてしまいました。

・PreparedStatementFactoryとResultSetFactoryのどちらでやるか。
 (案)従来と変わってしまいますが、PreparedStatementの方が実装とはマッチ
    している気がするので、こっちが希望です。PreparedStatementもきっちり
    クローズ出来ますし。

・PreparedStatementFactoryでやるとした場合、LimitOffsetの方をどうするか。
 (案)一端、LimitOffsetのコードを元(1.0.44)に戻して、新しい実装も追加す
    る。従来のものは互換性維持の為のみに残し、新規には使って欲しくな
    いというスタンスを取る。

 テスト用にj2ee.diconとか書き換えてましたが、Oracleの文字コード対応や
boolean対応のための設定を考えると、この辺りって取っつきにくい(難しい)
感じがしますね。


-- 
 Jundo Ishikawa <[E-MAIL ADDRESS DELETED]>
         ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: AbstractPagerResultSetFactory.java
型:         text/x-java
サイズ:     8626 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-s2dao-dev/attachments/20070808/d997e9cd/attachment-0002.bin 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: OracleRownumStatementFactory.java
型:         text/x-java
サイズ:     2223 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-s2dao-dev/attachments/20070808/d997e9cd/attachment-0003.bin 


seasar-s2dao-dev メーリングリストの案内