ファクトリー・メソッドを使用したインスタンスの作成
ObjectStore オブジェクトのインスタンスを作成するには、Factory.ObjectStore.createInstance メソッドを呼び出します。
オブジェクト・ストアの作成をサポートするには、管理の前提条件を満たしている必要があります。以下のタスクは、通常、データベース管理者とアプリケーション・サーバー管理者が行うタスクです。
- データベースを作成する
- アプリケーション・サーバー内に接続プールとデータ・ソースを構成し、データベースに接続する
- オブジェクト・ストアの管理ユーザーと管理グループを定義する
- オブジェクト・ストアの一般ユーザーと一般グループを定義する
以下の Java および C# の例では、ObjectStore オブジェクトをインスタンス化します。以下の例は、createInstance メソッドの 2 つのバージョンを示しています。1 つではスキーマ・スクリプトを使用し、もう 1 つでは使用しません。データベース管理者 (DBA) は、カスタム・スキーマ・スクリプトを使用してオブジェクト・ストアのデータベース・スキーマを変更できます。 ObjectStore オブジェクトは、最後のコミット (保存) ステップでサーバーへのラウンド・トリップが行われるまでは Global Configuration Database (GCD) には存在しません。
オブジェクト・インスタンスを作成したら、DisplayName、SymbolicName、DatabaseConnection の各プロパティーを設定する必要があります。 DatabaseConnection プロパティーは、CmDatabaseConnection オブジェクトに対して設定されます。このオブジェクトにより、ローカルの JNDI データ・ソース名と、トランザクション JNDI データ・ソース名が定義されます。
新しい ObjectStore オブジェクトを保存する前に、オブジェクト上に以下の DatabaseXXXStorageLocation プロパティーを設定できます (コード例には示されていません)。
- DatabaseTableStorageLocation。データベース内でのテーブルの配置場所を制御します (IBM® DB2® for z/OS® では無視されます)。
- DatabaseIndexStorageLocation。データベース内での索引の配置場所を制御します。
- DatabaseLOBStorageLocation。データベース内でのラージ・オブジェクト (LOB) データの配置場所を制御します (DB2 for z/OS では無視されます)。
Java の例
// オブジェクト・ストア・インスタンスを作成
public static void createObjectStoreInstance(
Connection conn,
String[] adminName, // 例: "Domain Admins, CEMPAdmin"
String[] userName, // 例: "Domain Users, CEMPUser"
CmDatabaseConnection dbConn, // データ・ソースを定義
String objStoreName, // オブジェクト・ストア名。例: "ObjectStore1"
String scriptPath) // スクリプト・ファイル・パスを作成。例: "C:¥os_script.txt"
throws Exception {
// デフォルト・ドメインを取得
Domain domain = Factory.Domain.getInstance(conn, null);
// オブジェクト・ストアを作成
String[] admins = {adminName};
String[] users = {userName};
ObjectStore objStore = null;
if (scriptPath == null) {
// スキーマ・スクリプトを使用せずに作成
System.out.println("Creating object store without a schema script");
objStore = Factory.ObjectStore.createInstance(
domain, admins, users);
}
else {
// スキーマ・スクリプトを使用して作成
// getScript メソッドによるファイルからのスクリプト読み取り
String creationScript = getScript(scriptPath);
System.out.println("Creating object store with a schema script");
// スクリプト・ファイルの内容を出力するには、次の行のコメントを外す。
// System.out.println(creationScript);
objStore = Factory.ObjectStore.createInstance(
domain, admins, users, creationScript);
}
// プロパティーを設定
objStore.set_DisplayName(objStoreName);
objStore.set_SymbolicName(objStoreName);
objStore.set_DatabaseConnection(dbConn);
// オブジェクト・ストアを保存し、名前を表示
objStore.save(RefreshMode.REFRESH);
System.out.println("Object store name: " + objStore.get_Name());
}
C# の例
// オブジェクト・ストア・インスタンスを作成
public static void CreateObjectStoreInstance(
IConnection conn,
String[] adminName, // 例: "Domain Admins, CEMPAdmin"
String[] userName, // 例: "Domain Users, CEMPUser"
ICmDatabaseConnection dbConn, // データ・ソースを定義
String objStoreName, // オブジェクト・ストア名。例: "ObjectStore1"
String scriptPath) // スクリプト・ファイル・パスを作成。例: "C:¥os_script.txt"
// デフォルト・ドメインを取得
{IDomain domain = Factory.Domain.GetInstance(conn, null);
// オブジェクト・ストアを作成
String[] admins = {adminName};
String[] users = {userName};
IObjectStore objStore = null;
if (scriptPath == null) {
// スキーマ・スクリプトを使用せずに作成
Debug.WriteLine ("Creating object store without a schema script");
objStore = Factory.ObjectStore.CreateInstance(
domain, admins, users);
}
else {
// スキーマ・スクリプトを使用して作成
// GetScript メソッドによるファイルからのスクリプト読み取り
String creationScript = GetScript(scriptPath);
Debug.WriteLine("Creating object store with a schema script");
objStore = Factory.ObjectStore.CreateInstance(
domain, admins, users, creationScript);
}
// プロパティーを設定
objStore.DisplayName = objStoreName;
objStore.SymbolicName = objStoreName;
objStore.DatabaseConnection = dbConn;
// オブジェクト・ストアを保存し、名前を表示
ojbStore.Save(RefreshMode.REFRESH);
Debug.WriteLine("Object store name: " + objStore.Name);
}