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