« Model-Glue3 Gesture | メイン | Transfer がうまく動かない »

Transfer の利用

では、Transfer を利用するように書き換えてみる。

ColdSpring.xml で設定していた、販売商品のマスタデータをデータベースから取得するようにするため、下記のように書き換え。

<bean id="itemArrayBean" class="shopping.model.ItemArrayBean">
 <property name="itemArray">
  <list>
   <map>
    <entry key="name"><value>光学式マウス</value></entry>
    <entry key="price"><value>2600</value></entry>
   </map>
   <map>
    <entry key="name"><value>ボール式マウス</value></entry>
    <entry key="price"><value>1100</value></entry>
   </map>
   <map>
    <entry key="name"><value>レーザー式マウス</value></entry>
    <entry key="price"><value>4800</value></entry>
   </map>
  </list>
 </property>
</bean>

 ↓

<bean id="itemArrayBean" class="shopping.model.ItemArrayBean" autowire="byType" />

マスタデータを設定する必要が無くなるため、ばっさり、削除。
その代わり、AutoWire で Bean を注入。

何を注入するのか。shopping.model.CartProcess に以下のコードを追加する。

<cffunction name="setOrmService" access="public" returntype="void" output="false">
 <cfargument name="ormService" type="transfer.TransferFactory" required="true">
 <cfset variables.transfer = arguments.ormService.getTransfer() />
</cffunction>

前回設定した ormService を渡して取得する Transfer オブジェクトを利用してデータベースからデータを取得するようにするのである。
この ormService は、type を見ればわかるように、transfer.TransferFactory である。

一方、ormAdapter の正体は、ModelGlue.unity.orm.transfer.TransferAdapter で、どうやら、Model-Glue が用意してくれたもののようだ。
いっそのこと、抽象クラスかインターフェースかなんかにキャストして、O-R マッピングで汎用的に使えるようになっていれば、おもしろそうだけど、俺が何か間違っているのだろうか。

shopping.model.ItemArrayBean で Transfer オブジェクトを受け取り、データを取得して、既存の戻り値と同じものを返せば、商品一覧をデータベースから取得して表示するだけなら、書き換えるプログラムは、この ItemArrayBean だけとなる。

トラックバック

このエントリーのトラックバックURL:
http://www.schwarzmond.info/mt/mt-tb.cgi/56

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年05月08日 10:29に投稿されたエントリーのページです。

ひとつ前の投稿は「Model-Glue3 Gesture」です。

次の投稿は「Transfer がうまく動かない」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。