DBFlute: 数値型のJava上での型の悩み

【注意】
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
この記事は古いバージョンのDBFluteを元にしています。
後ろの方に追記がありますのでそれを必ずご覧下さい。
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

数値はデフォルトで全てBigDecimalです。
以下のように設定すると、通常の数値型でIntegerやLongを利用できます。
map:{
TINYINT=Integer; SMALLINT=Integer; INTEGER=Integer; BIGINT=Long
}
そして、EMechaではこの設定をデフォルトにしています。
それは、Java-5.0になって、オートボクシングが導入されて、
IntegerやLongがリテラルと相性がよくなったからです。
「全てBigDecimalにするのがGood」ってのは確かに昔の話かも。
まあ、色々人によって好みがあるかもしれませんね。
(皆さんどうですか?)

また、もう一つ悩みが...
上記の設定だとNUMERIC(8, 0)はBigDecimalになります。
NUMERICがBigDecimalに関連付けれらているからです。
DB設計(の好み)に依存します。

  A. intやbigintを多用する人 → 特に問題なし
  B. 全ての数値はnumericにする人 → 数値が全てBigDecimal

「A」の人は本当に小数点を利用するときにしかnumericをあまり使わないでしょう。
「B」の人はnumeric(8, 0)とかnumeric(12, 0)とかを多用することでしょう。

基本的には、設定で型を自由に指定できるようにしているので、
各プロジェクトで調整してもらえれば良いのですが、

o numeric(8, 0)はInteger、
o numeric(16, 0)はLong、
o numeric(8, 2)はBigDecimal

というような設定は今はできません。
こちらはちょっとどうにかしないといけないかな!?

  → 「NUMERIC=$$AutoMapping$$」とか書くと、
     小数点のアリナシで型が自動的に変わるとか...

【追記:2007/11/27 20:50頃】
「NUMERIC=$$AutoMapping$$」と指定すると、
  o 小数点桁数が1以上 → BigDecimal (NUMERICのデフォルト)
  o 小数点桁数が0でサイズが10桁以上 → BIGINTに対応する型
  o 小数点桁数が0でサイズが9桁以下   → INTEGERに対応する型
という風にしました。
DBFlute-0.5.8にて反映されます。
これはデフォルトの挙動ではありません。
明示的にjdbcToJavaNativeMapにて指定する必要があります。
(2009/07/03追記:0.9.x以降はtypeMappingMap.dfpropでの設定が推奨)