SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

SQLも使えるオブジェクトデータベース「CACHE'」を知る

第7回 CACHÉを活用した.NETアプリケーション開発(後半)

SQLも使えるオブジェクトデータベース「CACHE'」を知る 7


  • このエントリーをはてなブックマークに追加

CACHÉプロキシオブジェクトを使ったアクセス方法

 Cachéの重要な機能の1つとして、データベースの各項目をリレーショナルテーブルの行ではなくオブジェクトとして捉えてアクセスできる機能があります。Caché .NETアプリケーションでは、Cachéプロキシオブジェクトを使用してこの機能が実装されます。

 このプロキシオブジェクトは、Cachéクラスディクショナリに定義されたクラスから生成された.NETクラスのインスタンスです。生成されたプロキシクラスは、完全に互換性のある.NETマネージドコードで記述されているため、プロジェクトのどの場所でも使用できます。

CACHÉプロキシオブジェクトとCACHÉ ADO Providerの相違点

 CACHÉプロキシオブジェクトには、次の2つの特徴があり、それがCACHÉ ADO Providerと大きく異なる点です。

  1. Cachéオブジェクトバインディングウィザードによって、Cachéクラスに対応する .NETプロキシクラスを生成する必要があります。
  2.  
  3. インスタンスにアクセスするには、CacheCommandCacheDataReaderを使うのではなく、プロキシオブジェクトを使います。IDを指定して、特定のインスタンスをデータベースから取得する際には、SQL文は必要なく、OpenId()クラスメソッドの呼び出しによって、接続と必要なインスタンスが定義されます。

 インスタンスの各データ項目は、CacheReaderでアクセスするデータ列ではなく、ドット表記で指定して直接アクセスできるメソッドやプロパティとして扱われます。このことにより、多くの場合、ADO Providerを使うコードよりもはるかに記述や維持が簡単です。

CACHÉオブジェクトバインディングウィザードによるCACHÉプロキシオブジェクトの生成

 Cachéオブジェクトバインディングウィザードは、コマンドラインからも実行可能ですが、アドインをVisual Studioの[外部ツール]メニューに追加して、Visual Studioから離れることなく利用が可能です。その手順は次のようになります(ここではVisual C# 2005 Express Editionの例)。

1. Visual Studioの[ツール]メニューから[外部ツール]を選択します。

外部ツール設定ダイアログ
外部ツール設定ダイアログ

2. このダイアログの[追加]をクリックし、次のように設定します。

  • [タイトル]フィールド
  • ……「Cache Object Binding Wizard」と入力。
  • [コマンド]フィールド
  • ……フィールドの右の参照ボタンを押して、「<Cachéがインストールされたディレクトリ>\Dev\dotnet\Bin」ディレクトリを参照し、「CacheNetWizard.exe」を選択します。
外部ツール設定 ― タイトルとコマンドフィールド
外部ツール設定 ― タイトルとコマンドフィールド

3. [OK]をクリックして設定を完了させると、Visual Studioの[ツール]メニューに[Cache Object Binding Wizard]が追加されます。

【追加されたCache Object Binding Wizard
【追加されたCache Object Binding Wizard

4. このメニューからCache Object Binding Wizardを起動します。

 ここで次の画面のように、接続するCachéサーバと生成する内容(ソースコードと対象言語)および出力先、使用するクラスを指定します。

Cache Object Binding Wizardの設定例
Cache Object Binding Wizardの設定例

 [Generate]ボタンを押すと、Cachéプロキシオブジェクトが生成されます。これをプロジェクトに追加することで、Visual Studioで利用可能になります。

CACHÉプロキシオブジェクトの使い方

 Cachéプロキシオブジェクトは、データベースのインスタンスに対して、標準的な操作のほとんどを実行できます。例えば、オブジェクトを開いて読み込むには、OpenId()メソッドを使用し、IDを指定してインスタンスにアクセスします。OpenId()はスタティッククラスメソッドであり、次のようにインスタンス名ではなくタイプ名で指定します。オブジェクトをインスタンス化しておくと、標準ドット表記を使用してデータの読み書きが行えます。

Cache'プロキシオブジェクトのオープンと読み込み
Sample.Person person = Sample.Person.OpenId(CacheConnect, "1");

string Name = person.Name
string ID = person.Id();

    person.Home.City = "Smallville";
    person.Home.State = "MN";

 また、Cachéプロキシオブジェクトのコンストラクタは、CacheConnectionオブジェクトの情報を使用して、プロキシオブジェクトとCachéサーバ上の対応するオブジェクトとのリンクを作成します。

サーバ上のオブジェクトとのリンク
Sample.Person person = new Sample.Person(CacheConnect);
    person.Name = "Luthor, Lexus A.";
    person.SSN = "999-45-6789";

 続いて、Save()メソッドを使って、データベースに永続インスタンスを作成します。インスタンスを保存しておくと、Id()メソッドにより、新たに生成されたID番号が取得できます。

永続インスタンスの作成
CacheStatus sc = person.Save();
    Display.WriteLine("Save status: " + sc.IsOK.ToString());
    string ID = person.Id();
    Display.WriteLine("Saved id: " + person.Id());

 Close()メソッドを使うと、プロキシオブジェクトは破棄せずに、データベースとプロキシオブジェクトとの接続を切断します。プロキシオブジェクトを破棄するにはDispose()メソッドを使いますが、データベースにある永続インスタンスには影響しません。データベースからインスタンスを削除するためには、DeleteId()メソッドを使います。次のようにExistsId()メソッドを使うと、そのインスタンスが削除されたことを確認できます。

インスタンスの削除
CacheStatus sc = Sample.Person.DeleteId(CacheConnect, ID);
    Display.WriteLine("Delete status: " + sc.IsOK.ToString());
    Display.WriteLine("person " + ID + " exists: "
        + Sample.Person.ExistsId(CacheConnect, ID).ToString());

 では、サンプルプログラムの実行画面を確認してみましょう。次の画面は、Save()メソッドによる永続化と、そのインスタンスの削除を続けて実行した結果です。

 

まとめ

 2回に分けてCachéを活用した.NETアプリケーション開発について紹介しましたが、CACHÉ ADO ProviderクラスもCACHÉプロキシオブジェクトも共に、本記事のスペースでは説明しきれないほどの機能を有しています。ぜひ、インターシステムズのドキュメント提供サイトで詳細を確認してください。

 次回は、CachéによるWebアプリケーション構築のための環境である「Caché Server Page」について解説します。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
SQLも使えるオブジェクトデータベース「CACHE'」を知る連載記事一覧

もっと読む

この記事の著者

トップスタジオ(トップスタジオ)

1997年の創立以来、一貫してPC/IT関連書籍、雑誌等記事の制作業務を手掛けるプロフェッショナル集団。翻訳・編集・DTPのほか、技術監修や著作も多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1680 2008/09/04 12:52

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング