[Seasar-user:20271] Re: [DBFlute]OracleでDATE型カラムのインデックスが利用されない

kubo [E-MAIL ADDRESS DELETED]
2010年 10月 21日 (木) 23:53:01 JST


久保(jflute)です。

>> O/Rマッパには厳しい話ですね。。。
>> いっそリフレクションでガツンってのは
>> やはり無理矢理過ぎるかなぁ。
>
> リフレクションでガツンとは?

コンパイルレベルでDBMSのJDBCに依存したくないので、
リフレクションで oracle.sql.DATE を利用するように処理する
って感じですね。(もちろん、Oracleの場合に限り)

自動生成ありきのツールなので、oracle.sql.DATE を利用する
ValueType を自動生成するのが現実的かもと今考えています。
(OracleのDATE型の場合はそのValueTypeを使う)
アプリは基本的にOracleのJDBCに依存しても問題ないので。
(一応、オプションで)

2010/10/21 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date:    Thu, 21 Oct 2010 20:52:00 +0900
> From:    kubo <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:20268] Re: [DBFlute]OracleでDATE型カラムのインデックスが利用されない
>
>> なるほど、そもそもDBMSに依存しないJDBCの型の中で、
>> Oracle の DATE 型をぴったし当てはめられる型が存在しない
>> というところですかね。
>
> そうですね.
> JDBC および標準 SQL には日時 (日付と時刻) を
> 扱うデータ型が基本的に TIMESTAMP 1 種類
> (TZ 等は精度と同じ扱いとして) しかないのに対し,
> Oracle には DATE と TIMESTAMP の 2 種類があり,
> どちらも java.sql.Timestamp にマッピングするのが
> 問題の根本でしょうね.
> 歴史的なものなのでしょうがないですけど.
>
>> DATE型カラムのメタデータが:
>>   ojdbc5.jar = java.sql.Types.DATE
>>   ojdbc6.jar = java.sql.Types.TIMESTAMP
>> となっていたので TIMESTAMP の指定で問題ないかなと
>> 思ったのですが、(実際検索の動きとしては問題ないですが)
>> 内部的には型違いと。
>
> Oracle の DATE が java.sql.Types.DATE なのは
> 単純に間違ってますよね.
> Oracle の DATE は日付型ではなく日時型なので.
> ただし,Oracle の日時型には 2 種類ある...
>
>> > Oracle JDBC ドライバには oracle.sql.DATE という
>> > 型があるので、java.sql.Timestamp からこの型に
>> > 変換して、OraclePreparedStatement#setDATE() に
>> > 渡すなんてのが Oracle 的に好ましいやり方なのかも。
>>
>> O/Rマッパには厳しい話ですね。。。
>> いっそリフレクションでガツンってのは
>> やはり無理矢理過ぎるかなぁ。
>
> リフレクションでガツンとは?
>
>
> S2JDBC でも同じ問題は起こり得るので
> 何か考えた方がいいかなぁ.
> 幸い (?),S2JDBC では
>
> @Temporal(TemporalType.TIMESTAMP)
> public java.util.Date xxx;
>
> public java.sql.Timestamp xxx;
>
> という 2 種類の書き方ができるので,前者の場合は
> DATE,後者の場合は TIMESTAMP にマップして,
> 前者は OracleDialect で oracle.sql.DATE に
> 変換するとか.
> S2JDBC-Gen と辻褄合うのかなぁ...
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
>    <property name="twitter">"http://twitter.com/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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