CACHÉによるオブジェクト指向開発(2/2)
CACHÉターミナルによるインスタンスの生成・保存
作成したFS.Person
クラスを使用して、そのインスタンスを生成してみましょう。Caché ObjectScriptはJava言語と同様のP-Code言語ですが、Cachéターミナル上では、インタプリタ言語のように即時実行が可能となり、インスタンスの生成コマンドを実行できます。
Cachéターミナルで、次のコマンドを実行しましょう。
Set p = ##class(FS.Person).%New()
このコマンドは、FS.Person
クラスのインスタンスを生成し、メモリ上の変数p
に格納するものです(ただし、この時点ではインスタンスはまだデータベースに保存されません)。%New()
は新しいインスタンスを生成するクラスメソッドで、クラスメソッドを呼び出すには、##class(classname).method()
というシンタックスを使用します。続いて、このインスタンスに対して、各プロパティの値を設定します。
Set p.Name = "インターシステムズ 太郎" Set p.Address = "東京都新宿区" Set p.Gender = "M" Set p.DOB = ##class(%Date).DisplayToLogical("5/1/1978")
DOB
プロパティには、##class(%Date).DisplayToLogical()
というシンタックスによって、日付を文字列からCachéの内部日付フォーマットに変換して設定しています。
最後に、Write
コマンドでメモリ上のインスタンスをデータベースに保存します。下図のように、1が出力されれば保存が成功したことになります。これで、インスタンスが1つデータベースに保存されました。
CACHÉターミナルによるインスタンスの読み込み
本当にインスタンスがデータベースに保存されたか、別のターミナルを開いてそこからインスタンスを読み込んで確かめてみましょう。別のCachéターミナルから次のコマンドを実行します。
Set p = ##class(FS.Person).%OpenId(1)
この%OpenId()
は、指定されたOID(Object ID)を持つインスタンスをオープンするメソッドです。OIDは、インスタンス保存時にCachéにより自動的に付与され、通常は正の整数です。クラスの最初のインスタンスは通常OID=1となるので、このコマンドで先程保存されたインスタンスを読み込むことができるのです。それでは、オープンしたインスタンスのプロパティの値を確かめてみましょう。下図は、その出力結果です。
その他、作成したクラスのインスタンスを操作するメソッドが定義できます。また年齢のような計算して求める計算プロパティなど、さまざまな機能があります。本連載では文字量の都合上、すべてを説明することはできませんが、インターシステムズのWebサイト「技術資料とカタログ」ページにさまざまな技術資料がありますので、ぜひ参考にしてください。
CACHÉの拡張性
Cachéは以上のような特長を持ったオブジェクトデータベースです。現在提供されているバージョンのCaché 5.2では、上記したこと以外にも、主に次のような拡張が成されています。
.NETサポートの強化
マネージドオブジェクトプロジェクション機能により、Cachéオブジェクトから.NETアセンブリの自動生成が可能。また、Visual Studioで開発する場合、Cachéのマネージド.NETオブジェクトプロジェクションにアクセスできるプラグイン機能が追加。
SNMPサポート
CachéモニタにSNMP(Simple Network Management Protocol)サポートが加わり、SNMPを使ったさまざまなサードパーティのシステム管理ツールやフレームワークによるCachéの監視が可能。
オブジェクトの同期
オブジェクトやSQLを通して自動的に挿入、更新、削除を自動的に追跡し、その変更を他のシステムにプロパゲートする機能が追加。この機能により、モバイルや断続的に接続されるようなアプリケーションで、データベースの整合性を保つことが可能。
まとめ
この第2回で、Cachéの基本操作と拡張性はご理解いただけたでしょうか。次回以降は、Cachéによる本格的なシステム開発について解説していきます。第3回は、JavaバインディングとJDBC、およびCaché 2007より搭載される、オブジェクトリレーショナルマッピングを不要にする新コンポーネント「Jalapeno(ハラペーニョ)」の概要に触れたいと思います。