オブジェクト ストア
オブジェクト ストアは、データベースの持続化のためにシンプルな API を提供します。データベースへのオブジェクトの持続化を必要とするモジュールは、通常、オブジェクト ストア API を使用してすべての CRUD(作成、読み取り、更新、削除)操作を実行します。
Cisco UCS Director では、データベースとして MySQL を使用します。プラットフォーム ランタイムは、DataNucleus が提供する Java Data Object(JDO)ライブラリを利用して、オブジェクト クエリ表現によってすべての SQL 操作を抽象化します。これにより、データの持続性について開発の簡素化、高速化が可能になります。オブジェクト ストアのマニュアルには、JDO を使用して CRUD 操作を行う方法を示す項も用意されています。
(注) |
このマニュアルで、POJO(Plain Old Java Object)という頭字語は、他のクラスを拡張しない、またはインターフェイスを実装しない Java クラスを指しています。 |
クラスへの持続性のマーキング
データベースで持続的に存在する必要がある POJO クラスは、JDO の適切な注釈を使用して定義し、マーキングする必要があります。次に示すクラスは、JDO の持続性を示すマーキングが付けられています。
このクラスでは、次の点に注意してください。
-
foo_netapp_filer がクラス宣言の先頭に付加されていること。
-
使用するテーブルの名前を
table
属性で指定していること。 -
foo
はモジュールの名前であること。 -
持続性が必要なフィールドに
@Persistent
が付加されていること。
package com.cloupia.lib.cIaaS.netapp.model;
@PersistenceCapable(detachable = "true", table = “foo_netapp_filer”)
public class NetAppFiler
{
@Persistent
private String filerName;
@Persistent
private String accountName;
@Persistent
private String dcName;
}
前述のクラスには、@PersistenceCapable
と @Persistent
の 2 つの注釈が使用されています。これらの持続性は JDO で定義されており、Cisco UCS Director プラットフォーム ランタイムでは、持続的なすべてのクラスがこれら 2 つの注釈でマーキングされると想定しています。JDO ではネストされたスキーマを作成でき、許可されてはいますが、Cisco
UCS Director ではフラット スキーマを使用しているため、モジュールにネストされたスキーマを作成することは推奨されません。
次のタスク
持続性クラスはデータベースに対する CRUD 操作に対応できるようになりました。
持続性クラスの公開
JDO の適切な注釈でマーキングされたクラスは公開して、プラットフォーム ランタイムがそのクラスを取得できるようにする必要があります。
手順の概要
- jdo.files という名前のファイルを、持続性クラスと同じディレクトリ(パッケージ)に作成します。
- 次の手順を実行して、クラスの名前をファイルに追加します。
手順の詳細
ステップ 1 |
jdo.files という名前のファイルを、持続性クラスと同じディレクトリ(パッケージ)に作成します。 |
ステップ 2 |
次の手順を実行して、クラスの名前をファイルに追加します。 例:
|
持続性クラスの CRUD 操作の実行
持続性クラスでデータベースに対する CRUD 操作を実行できる場合、次の例に示すように、使用可能な各種操作を行うことができます。
オブジェクトの新規インスタンスの作成
NetAppFiler filer = new NetAppFiler();
filer.setAccountName("netapp-account");
filer.setDcName("Default Datacenter");
filer.setfilerName("filer0");
filer.setIpAddress("192.168.0.1");
ObjStore store = ObjStoreHelper.getStore(NetAppFiler.class);
store.insert(filer);
オブジェクトの単一インスタンスの変更
ObjStore store = ObjStoreHelper.getStore(NetAppFiler.class);
String query = "filerName == 'filer0'";
//Use Java field names as parameter,
// can use && , || operators in the query.
store.modifySingleObject(query, filer);
データベースからのすべてのインスタンスのクエリ
ObjStore store = ObjStoreHelper.getStore(NetAppFiler.class);
List filerList = store.queryAll();
ファイラ クエリを使用したインスタンスのクエリ
ObjStore store = ObjStoreHelper.getStore(NetAppFiler.class);
String query = "dcName == 'Default Datacenter'";
List filerList = store.query(query);