2012年07月31日

ColdFusion ORM

開発部だより 第160回


こんにちは!

最近は暑さを言い訳に、ビール飲みまくりーの、フトリーノ。ijです。

今回はオブジェクトリレーショナルマッピング (以降、ORM)フレームワークが、ColdFusionでも、バージョン9から機能として使えるようになっているので、一つのテーブルから全件取得する簡単な例で、試してみたいと思います。


今回データを取得するテーブル
cf_orm_table_2012-07-31_184541.jpg


それでは、ORMで全件を取得してみます。

手順.1
Application.cfcにORMの設定を行う。

[Application.cfc]
<cfcomponent>
  <cfset this.name = "ORM_TEST" />
  <!--- ORMを有効にする --->
  <cfset this.ormenabled = "true" />
  <!--- ORMで使用するデータソースを指定 --->
  <cfset this.datasource = "SATT" />
</cfcomponent>


手順.2
ORMマッピングの定義を行う。

今回はCFCを使って定義してみます。
*JavaでおなじみのHibernate形式のマッピングファイル (.hbmxml)でも定義できます。

[user_master.cfc]
<!--- CFCでマッピングファイルを定義する場合、persistent="true" に --->
<cfcomponent persistent="true">
  <!--- cfpropertyでテーブルの各カラムをプロパティとしてマッピング --->
  <cfproperty name="user_id" fieldtype="id" />
  <cfproperty name="user_name" />
  <cfproperty name="entry_date" />
  <cfproperty name="change_date" />
</cfcomponent>


手順.3
データを全件取得します。

<cfset userMaster = EntityLoad("user_master") />

<cfdump var="#userMaster#" />

結果はオブジェクトを格納した配列が返されます。
cf_orm_2012-07-31_184843.jpg

*マッピングの定義を変更した場合、自動的にはロードされませんので、
ApplicationStop()で、アプリケーションを再起動するか、ORMReload()を呼び出す必要があります。


比較の為に、今度は<cfquery>で全件を取得してみます。

<cfquery name="userMaster" datasource="SATT">
  SELECT
    user_id,
    user_name,
    entry_date,
    change_date
  FROM
    user_master
</cfquery>

<cfdump var="#userMaster#" />

当然ですが、結果はクエリが返されます。
cfquery_2012-07-31_184808.jpg

いかがでしたでしょうか。

ColdFusionでも手軽にORMが使用できるようになった事がお分かりいただけたかと思います。

Adobe ColdFusion 10:ColdFusion ORM

それでは、また!
posted by ij at 19:20
開発部だより | コメント(0) | トラックバック(0)
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック