例のごとく、今までのサンプルアプリケーションを変更していく。
まずは、config/transfer/Datasource.xml から。
<datasource>
<name>shopping</name>
<username></username>
<password></password>
</datasource>
ColdFusion の管理画面で、データソースを設定して、その名前を入れるだけ。
次に、config/ColdSpring.xml 。今までコメントアウトしてきたところだ。
<alias alias="ormAdapter" name="ormAdapter.Transfer" />
<alias alias="ormService" name="ormService.Transfer" />
<bean id="transferConfiguration" class="transfer.com.config.Configuration">
<constructor-arg name="datasourcePath"><value>/shopping/config/transfer/Datasource.xml</value></constructor-arg>
<constructor-arg name="configPath"><value>/shopping/config/transfer/Transfer.xml</value></constructor-arg>
<constructor-arg name="definitionPath"><value>/shopping/model/data/transfer</value></constructor-arg>
</bean>
この状態でアプリケーションが動くかどうか確認してみよう。
Model-Glue デバッグの2行目に、Using ORM Adapter: com.adobe.hs.common.orm.TransferAdapter とか表示されるだろうか。
なにかエラーのようなものがなければ、OKだ。
いよいよ、Transfer の肝、config/transfer/Transfer.xml 。
<objectDefinitions>
<package name="master">
<!-- Category -->
<object name="Category" table="CATEGORYMST">
<id name="PKeyCategoryId" type="numeric" column="categoryid" />
<property name="CategoryName" type="string" column="categoryname" />
<onetomany name="CategoryItemLink" lazy="true">
<link to="master.Item" column="lnkcategoryid" />
<collection type="struct">
<key property="ItemId" />
</collection>
</onetomany>
</object>
<!-- Item -->
<object name="Item" table="ITEMMST" sequence="ITEMMST_itemid_seq">
<id name="PKeyItemId" type="numeric" column="itemid" generate="false" />
<property name="ItemName" type="string" column="itemname" />
<property name="Price" type="numeric" column="price" />
<manytoone name="ItemCategoryLink" lazy="true">
<link to="master.Category" column="lnkcategoryid" />
</manytoone>
</object>
</package>
</objectDefinitions>
たぶん、いきなり見ても、わからないだろう。
package は、Transfer 上での意味しかなく、テーブルをグループ化するためのもの。
object は、テーブル。id は、主キーカラム。property は、カラム。
onetomany 、manytoone 、は、他のテーブルとのリレーション設定。
これだけ把握した上で、ざっと眺めれば、なんとかわかってくるだろうか。