[Seasar-user:801] Re: S2JDBC でOracleのUnicode問題とうまく付き合いたい ...

B furyu.omron.co.jp Hikaru Taniguchi taniguchi
2004年 6月 10日 (木) 13:05:12 JST


tanigonです。

おおっ…反応がたくさんあり、さすがというか、本当に勉強になります。
ありがとうございます。

スガさん、ありがとうございます。 ValueType周りは見てはいましたが、なるほ
ど、という感じです。 ありがとうございます。
ちなみに、これには全く気が付きませんでした・・・ ↓

(原文から抜粋)
> UPDATE や INSERT なら OK ですが、SELECT に問題があります。
> Bean(List)ResultSetHandler なら上手くいくのですが、
> Map(List)ResultSetHandler だと上手くいきません。
> 
> 理由は ResultSetMetaDataPropertyHandler 内で
> ValueTypes#getValueType(Class) ではなく
> ValueTypes#getValueType(int) の方を使っているためです。
> 
> 前者は登録したものを返しますが、後者は static なものを直接返します。
なるほど〜…

ところで私自身のポリシーのせいでややこしくなっているところもあります。
どのResultSetHandlerを使うか、というのはカプセル化したとしても結局のとこ
ろ   hoge = (List)fuga.execute... のようになってしまうため、大元の処理
ロジックがResultSetHandler実装に依存(ただし「出力のされ方」だけですが)し
てしまいますし、同様の理由でSQLも .dicon には設定しないようにしています。
(ソースコードの可読性(というと語弊がありますが・・・)も向上するように思
います)

と、こうなると、厄介なのが・・・

ひがやすおさん:
(一部抜粋)
> <property name="resultSetHandler">
>   <component class="org.seasar.extension.jdbc.impl.BeanResultSetHandler">
>     <arg>@[E-MAIL ADDRESS DELETED]</arg>
>     <aspect>OracleResultSetInterceptor</aspect>
>   </component>
> </property>

 そう・・・自分自身でAOPがいいなあとかいいながら コンテナを使わないこ
とになってしまうために<aspect>が使えないんですよ (;_;)
 これは悲しい…というか ちょっとしたジレンマですね。私が頭を切り替えれ
ばいいんでしょうけど…
 今はというと、DIしてもらうのは、DataSourceもしくはBasicSelectHandlerだ
けにしています。そして set...(new ConcreteResultSetHandler()) というよ
うなことをやっています。

土居さん:
(抜粋)
>         <property name="resultSetHandler">
>             <component class="org.seasar.extension.jdbc.impl.BeanResultSetHandler">
>                 <arg>@[E-MAIL ADDRESS DELETED]</arg>
>             </component>
>         </property>
> のように自分でResultSetHandlerを指定できるので、"〜"をうまく処理する
> ResultSetHandlerを用意してあげる…ではだめでしょうか?
> #どうしてもAOPにしたいですか?:-)
 AOPはなんとなくアイデアというか「これって実はcrosscutting concernじゃ
ないのか」という思いが先走ってるだけなので、手段と目的を取り違えないよう
に気を付けたいと思います。

 ひとまず、ResultSetHandlerに手を入れていく(上の思想はひとまず置いとい
て、ResultSetHandlerをDIしてもらうことにしてサブクラス作る、かな)という
方向で回避しようと思います。

 皆さん本当にありがとうございます。

# ひがさん、後ほど関係部分のソースをメールしときます

-- 
Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>

 



Seasar-user メーリングリストの案内