EzJDBCの照会結果格納Beanへの自動コンバート機能
本日は、EzJDBCがテーブルの照会結果をEntity(Bean)にbindする機能について説明したいと思います。
今まで特に説明のなかでふれてこなかった事ですが、既に理解されている方も多いかと思います。
まず、EzJDBCではテーブルのレコード結果を格納するEntityまたはBeanに制限はありません。
EzJDBCはテーブルの照会結果をTryGenでテーブル定義書から自動生成されるEntityはもちろん、開発者が作成したJavaBeanやEzServletのView(Form)クラスにもテーブルの照会結果を格納してくれます。
つまり、レコードの格納先が限定されないという強みがあるわけですね。(TryGun1にはない機能)
また、格納先のJavaBeanはPOJOでも良いですし、独自の親クラスを継承していても問題ありません。
格納先のJavaBeanは複数階層にわたって継承していても問題なく、親クラスに共通項目として持っているプロパティにもキチンと値をセットしてくれます。
EzJDBCはテーブルの項目名とJavaBeanのプロパティ名をキャメル記法でマッチングしたJavaBeanのプロパティに値をセットする方式を採用しています。
例として、テーブルの項目名が「USER_NAME」の場合は、JavaBeanのプロパティ「userName」に値をセットするわけです。
つまりEzJDBCの照会機能(select)では格納先のBeanが自由に設定でき、照会結果の選択項目の値はキャメル記法により、JavaBeanのプロパティ
へバインディングされる分けです。
EzJDBCでは、じみーな機能として選択項目値をBeanのプロパティの型に自動的にコンバートする機能も提供しています。下記のテーブルを照会した結果を下記のBeanに格納する場合を例に説明します。
CUSTOMERテーブル | Customer.java | ||
項目名 | 型 | プロパティ名 | 型 |
ID | INTEGER | id | int |
NAME | CHAR | name | String |
AGE | INTEGER | age | long |
WEIGHT | DECIMAL | weight | BigDecimal |
BIRTH_DAY | DATE | birthDay | int |
CREATED | TIMESTAMP | created | String |
MODIFICATION | TIMESTAMP | modification | Timestamp |
CUSTOMERテーブルの項目の型と結果を格納するCustomer.javaの上記テーブルの全レコード、全項目を照会するEzJDBCのソースは以下のようになります。
// 照会対象となるCUSTOMERテーブル情報インスタンスを生成します。
_CUSTOMER CS = new _CUSTONER();
// CUSTOMERテーブルの全レコードを照会します。
Listlist = EzJDBC.froms(CS).find(Hoge.class);
照会の結果は、Hoge.java(Enity)に格納されますが、皆さんお気づきのとおりテーブルの項目の型とEnityのプロパティの型が一致していません。
EzJDBCでは、このように型に違いがあった場合はテーブルの項目の型からEntityのプロパティの型に自動でコンバートしてセットします。
まぁ、とーぜんって言えば当然の機能ですけど、やっぱり開発者が自分でコンバートする必要がないので楽ですね(^^)