ここでは、Oracle OLAP 11g リリース1(11.1)のOracle OLAP Java APIの新機能について説明します。
Oracle OLAP Java APIの一部の機能は、前のリリースとほとんど変わっていません。たとえば、oracle.olapi.data.source
パッケージのクラスでは問合せの作成を、oracle.olapi.data.cursor
パッケージのクラスではデータの取得を行うことができます。ただし、Oracle OLAP 11g リリース1(11.1)では、APIのメタデータ・モデルが変更され、多くの新機能が追加されています。主要な新機能については、次のトピックで説明します。
Oracle OLAP Java APIでは、永続メタデータ・オブジェクトを作成およびメンテナンスできるようになりました。Oracle Databaseは、Oracleデータ・ディクショナリにメタデータ・オブジェクトを格納します。
この新機能を提供するために、Oracle OLAP Java APIでは、メタデータ・モデルが大幅に見直されました。新しいモデルではいくつかの新しいパッケージが追加され、一部の既存パッケージに大幅な変更が加えられています。たとえば、oracle.olapi.metadata.mdm
パッケージには新しいクラスが多数追加されています。また、既存のクラスには多数の新しいメソッドが追加されています。
アプリケーションでは、所有オブジェクトのfindOrCreateメソッドを使用して、ほとんどのメタデータ・オブジェクトを作成します。たとえば、次に示すコードは、PRODUCTS_AWJ
という名前のMdmStandardDimension
を検出します。このディメンションが存在していない場合は、その名前を持つ標準的なディメンションを作成します。mdmDBSchema
オブジェクトは、そのディメンションを所有するMdmDatabaseSchema
です。
MdmStandardDimension prodDim = mdmDBSchema.findOrCreateStandardDimension("PRODUCTS_AWJ");
新しいモデルでは一部のクラスおよびメソッドが非推奨になりました。たとえば、oracle.olapi.metadata.mtm
パッケージのすべてのクラス、およびmtm
クラスを使用するその他のクラスのメソッドが非推奨となりました。一時mdm
オブジェクトをリレーショナル・データベース構造(表やビューの列など)にマップするmtm
クラスや、カスタム・メジャーの値の集計または割当てなどの操作をOracle OLAPが実行する方法を指定するmtm
クラスがありましたが、これらの機能は、oracle.olapi.metadata
サブパッケージ(deployment
、mapping
、mdm
)およびoracle.olapi.syntax
パッケージのクラスで代替されます。これらの新しいクラスを使用すると、アプリケーションで永続メタデータ・オブジェクトを作成し、それらのオブジェクトをデータソースにマップして、メジャーの値を提供する操作を指定できます。
アプリケーションが、OLAPメタデータ・モデルの最上位オブジェクト(AW
、MdmCube
およびMdmPrimaryDimension
などのクラスのインスタンス)を作成したTransaction
をコミットすると、これらのオブジェクトがOracleデータ・ディクショナリに存在することになります。これらのオブジェクトは通常のSQL問合せによって使用でき、Oracle OLAP Java APIを使用するアプリケーションでも使用できます。
メタデータ・オブジェクトはOracleデータ・ディクショナリ内に存在するため、Oracle DatabaseのDBAは、特定のタイプのメタデータ・オブジェクトへのアクセスを制限できます。このような制限はクライアント・アプリケーションで設定できます。設定するには、JDBC APIを使用し、ユーザー・セッションのJDBC接続を介して標準SQLのGRANT
コマンドおよびREVOKE
コマンドを送信します。オブジェクトのセキュリティの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。
アプリケーションで、アナリティック・ワークスペースを定義、構築およびメンテナンスできるようになりました。この新機能は、oracle.olapi.metadata
サブパッケージ(deployment
、mapping
、mdm
)およびoracle.olapi.syntax
パッケージのクラスで提供されます。Oracle Database 10g リリースでは、この機能は別のAPI(Oracle OLAP Analytic Workspace Java API)で提供されていましたが、このAPIは、このリリースでは完全に廃止されました。
メタデータ・オブジェクトを定義したら、アプリケーションでその定義をXML形式でエクスポートできます。Analytic Workspace Managerは、保存されたこのような定義をテンプレートとして参照します。アプリケーションでは、メタデータ・オブジェクトのXML定義をインポートすることもできます。XMLをエクスポートおよびインポートするためのメソッドは、MdmMetadataProvider
クラスにあります。
oracle.olap.syntax
パッケージのクラスを使用すると、SQLに似た式、関数、演算子および条件に基づいたJavaオブジェクトをアプリケーションで作成できます。SyntaxObject
クラスは、SQL式をJavaオブジェクトに変換したり、JavaオブジェクトからSQL構文を取得するためにアプリケーションで使用できる、fromSyntax
メソッドおよびtoSyntax
メソッドを持ちます。
アプリケーションでExpression
オブジェクトを作成するには、SyntaxObject.fromSyntax
メソッドを使用するか、コンストラクタを使用します。たとえば、次に示すコードでは、fromSyntax
メソッドを使用してStringExpression
を、コンストラクタ・メソッドを使用して別のStringExpression
を作成します。mp
オブジェクトはセッションのMdmMetadataProvider
です。
StringExpression strExp1 = (StringExpression) SyntaxObject.fromSyntax("'Hello world from syntax.'", mp); StringExpression strExp2 = new StringExpression("Hello world from constructor.");
もう1つの新機能として、Oracle DatabaseインスタンスへのJDBC接続およびメタデータ・オブジェクトのキャッシュを共有する複数のユーザー・セッションを利用できるようになりました。この機能は、oracle.olapi.session
パッケージのUserSession
クラスによって提供されます。
レガシー・アプリケーションをサポートするために、OLAP Java APIでは、以前のメソッドで作成されたメタデータ・オブジェクトを認識できるメタデータ・リーダーを指定できます。DataProvider
クラスにはメタデータ・リーダー・モードがあります。デフォルトでは、メタデータ・リーダーはOracle OLAP 11gのメタデータを認識します。OLAP Java APIの以前のバージョンで作成されたアプリケーションでOracle Database 11g リリース1(11.1)のインスタンスに接続し、DataProvider
を作成する場合、適切なメタデータ・リーダー・モードが自動的に使用されます。
アプリケーションでメタデータ・リーダー・モードを指定するには、Properties
オブジェクトのプロパティを使用するか、適切なXML形式の文字列を使用します。これらのモードおよびモードの指定方法については、『Oracle OLAP Java API Reference』のDataProvider
クラスのコンストラクタ・メソッドを参照してください。
アプリケーションでは複数のメタデータ・リーダー・モードを指定することはできません。11gのメタデータ・リーダーでは、以前の形式のメタデータは認識されません。