(57)【特許請求の範囲】
【請求項１】
１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを管理するオブジェクト管理装置であって、
外部記憶に格納されたデータへのアクセス方法である、複数のオブジェクト管理方法を指定する情報の中から、前記１つ以上のコンポーネントの種類毎にユーザが指定した、オブジェクト管理方法の情報を選択する選択手段と、
前記１つ以上のコンポーネントに含まれる永続化オブジェクトであって、外部記憶のデータと同じデータを有する永続化オブジェクトをキャッシュするオブジェクトキャッシュ部品、または、該外部記憶のデータを該永続化オブジェクトに設定し該永続化オブジェクトのデータを該外部記憶に書込むオブジェクト永続化処理部品として、あらかじめ用意された部品群の中から、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を選択し、選択されたオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を前記オブジェクト管理装置に組み込む切替手段と
を備えることを特徴とするオブジェクト管理装置。
【請求項２】
前記切替手段は、トランザクション毎にオブジェクトをキャッシュするキャッシュテーブルを有し、トランザクションの開始後に該キャッシュテーブルにオブジェクトを登録し、該トランザクションの終了時に該キャッシュテーブルをクリアするようなオブジェクトキャッシュ部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項３】
前記切替手段は、全トランザクション共通のキャッシュテーブルを有し、１つのトランザクションの終了時に該キャッシュテーブルをクリアせず、他のトランザクションに該キャッシュテーブル上のオブジェクトを利用させるようなオブジェクトキャッシュ部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項４】
前記切替手段は、前記アプリケーションプログラムが処理対象となるオブジェクトの取得をオブジェクトキャッシュ部品に対して要求したとき、該アプリケーションプログラムが使用していたオブジェクトが有する第１のデータを前記外部記憶に書込み、第２のデータを該使用していたオブジェクトに設定して該アプリケーションプログラムに返すようなオブジェクトキャッシュ部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項５】
前記切替手段は、前記アプリケーションプログラムが要求する前に、前記外部記憶のすべてのデータをあらかじめキャッシュしておくようなオブジェクトキャッシュ部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項６】
前記切替手段は、前記永続化オブジェクトにアクセスするためのインタフェースオブジェクトをキャッシュテーブルに登録し、該インタフェースを該永続化オブジェクトとともに再利用するようなオブジェクトキャッシュ部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項７】
前記外部記憶のデータの複数のデータ項目のうち、コンポーネントの種類毎に利用される１つ以上のデータ項目を指定する指定手段をさらに備え、前記切替手段は、前記永続化オブジェクトの指定されたデータ項目について、前記外部記憶のデータと該永続化オブジェクトの間の変換を行うようなオブジェクト永続化処理部品を、前記選択されたオブジェクト管理方法の情報に対応するオブジェクト永続化処理部品として選択することを特徴とする請求項１記載のオブジェクト管理装置。
【請求項８】
１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを管理するオブジェクト管理装置であって、
外部記憶に格納されたデータへのアクセス方法である、複数のオブジェクト管理方法を指定する情報の中から、前記１つ以上のコンポーネントの種類毎にユーザが指定した、オブジェクト管理方法の情報を選択するためのスケジュール情報を格納する格納手段と、
前記１つ以上のコンポーネントに含まれる永続化オブジェクトであって、外部記憶のデータと同じデータを有する永続化オブジェクトをキャッシュするオブジェクトキャッシュ部品、または、該外部記憶のデータを該永続化オブジェクトに設定し該永続化オブジェクトのデータを該外部記憶に書込むオブジェクト永続化処理部品として、あらかじめ用意された部品群の中から、前記スケジュール情報に従って選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を選択し、選択されたオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を前記オブジェクト管理装置に組み込む切替手段と
を備えることを特徴とするオブジェクト管理装置。
【請求項９】
１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを管理するコンピュータのためのプログラムを記録した記録媒体であって、
記録されたプログラムは、
外部記憶に格納されたデータへのアクセス方法である、複数のオブジェクト管理方法を指定する情報の中から、前記１つ以上のコンポーネントの種類毎にユーザが指定した、オブジェクト管理方法の情報を選択し、
前記１つ以上のコンポーネントに含まれる永続化オブジェクトであって、外部記憶のデータと同じデータを有する永続化オブジェクトをキャッシュするオブジェクトキャッシュ部品、または、該外部記憶のデータを該永続化オブジェクトに設定し該永続化オブジェクトのデータを該外部記憶に書込むオブジェクト永続化処理部品として、あらかじめ用意された部品群の中から、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を選択し、選択されたオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を前記コンピュータに組み込む
処理を前記コンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１０】
オブジェクト管理装置が１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを管理する管理方法であって、
外部記憶に格納されたデータへのアクセス方法である、複数のオブジェクト管理方法を指定する情報の中から、前記１つ以上のコンポーネントの種類毎にユーザが指定した、オブジェクト管理方法の情報を選択し、
前記１つ以上のコンポーネントに含まれる永続化オブジェクトであって、外部記憶のデータと同じデータを有する永続化オブジェクトをキャッシュするオブジェクトキャッシュ部品、または、該外部記憶のデータを該永続化オブジェクトに設定し該永続化オブジェクトのデータを該外部記憶に書込むオブジェクト永続化処理部品として、あらかじめ用意された部品群の中から、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を選択し、選択されたオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を前記オブジェクト管理装置に組み込む
ことを特徴とする管理方法。
【請求項１１】
１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを管理するコンピュータのためのプログラムであって、
外部記憶に格納されたデータへのアクセス方法である、複数のオブジェクト管理方法を指定する情報の中から、前記１つ以上のコンポーネントの種類毎にユーザが指定した、オブジェクト管理方法の情報を選択し、
前記１つ以上のコンポーネントに含まれる永続化オブジェクトであって、外部記憶のデータと同じデータを有する永続化オブジェクトをキャッシュするオブジェクトキャッシュ部品、または、該外部記憶のデータを該永続化オブジェクトに設定し該永続化オブジェクトのデータを該外部記憶に書込むオブジェクト永続化処理部品として、あらかじめ用意された部品群の中から、前記選択されたオブジェクト管理方法の情報に対応するオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を選択し、選択されたオブジェクトキャッシュ部品またはオブジェクト永続化処理部品を前記コンピュータに組み込む
処理を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト指向プログラミングに係り、コンポーネントを組み合わせてアプリケーションプログラムを構築し運用するためのオブジェクト管理装置およびその方法に関する。
【０００２】
【従来の技術】
業務システム等のアプリケーションプログラム（アプリケーション）は、しばしば、コンポーネントと呼ばれるプログラム単位を組み合わせて構築される。このようなアプリケーションの構築時／運用時（実行時）において、コンポーネント基盤は、二次記憶アクセス機能（例えば、データベースアクセス機能）、トランザクション機能、分散環境における通信機能等を各コンポーネントに提供する。
【０００３】
このうち、二次記憶アクセス機能は、アプリケーションからの要求に従って二次記憶にアクセスし、コンポーネントが指定する永続化オブジェクトのデータの書込みや読出しを行う機能である。ここで、永続化オブジェクトとは、二次記憶内のデータに対応するオブジェクトを指す。このオブジェクトは、通常、二次記憶内のデータと同じくらい長い寿命を持つ。
【０００４】
二次記憶への書込み・読出しの頻度はアプリケーション全体の性能に大きく関わるため、二次記憶へのアクセス回数を削減するために、オブジェクトのキャッシング機構がよく用いられる。この機構では、過去に二次記憶から読込んだデータを持つオブジェクトをメモリ上のキャッシュ内に蓄積しておき、同じデータの検索要求があった場合には、キャッシュ内のオブジェクトが用いられる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来のコンポーネント基盤におけるキャッシングには、次のような問題がある。
【０００６】
オブジェクトのキャッシングでは、キャッシュ内のデータの有効期間が重要になる。例えば、オブジェクトがキャッシュに登録されたあと、そのキャッシュを利用しないアプリケーションが、登録されたオブジェクトに対応する二次記憶のデータを変更すると、キャッシュ内のオブジェクトのデータと二次記憶内のデータが一致しなくなる。
【０００７】
そこで、この場合は、１つのトランザクション内に限定したキャッシングを行い、トランザクション終了時にデータが変更されている場合は、そのトランザクションの結果を無効にするような機構が必要となる。
【０００８】
一方、二次記憶内のデータがまったく変更されない場合には、オブジェクトのデータと二次記憶内のデータが常に等しいことが保証されるため、キャッシュに登録されたオブジェクトは常に有効となる。
【０００９】
従来のコンポーネント基盤が有するキャッシング機構は、すべてのアプリケーションが安全に動作できるような、効果が少ないキャッシング機構と、コンポーネント基盤自体に課された利用制限の下で最適化されたキャッシング機構のうちのいずれかである。このため、個々のアプリケーションに適したキャッシング戦略を実現するには、アプリケーション側でキャッシング機構を持つしかなく、アプリケーション開発の負荷が増大する。
【００１０】
本発明の課題は、コンポーネントを組み合わせてアプリケーションを構築し運用するシステムにおいて、個々のアプリケーションに適したキャッシング機構をコンポーネント基盤の中で提供するオブジェクト管理装置およびその方法を提供することである。
【００１１】
【課題を解決するための手段】
図１は、本発明のオブジェクト管理装置の原理図である。図１のオブジェクト管理装置は、選択手段１と切替手段２を備え、１つ以上のコンポーネントを含むアプリケーションプログラムにより用いられるオブジェクトを、アプリケーションプログラムを構成し実行する基盤となるコンポーネント基盤の中で管理する。
【００１２】
選択手段１は、あらかじめ用意された複数のオブジェクト管理方法から、コンポーネントの種類に適したオブジェクト管理方法を選択する。切替手段２は、コンポーネント基盤の中で、外部記憶のデータに対応する永続化オブジェクトを特定のアルゴリズムでキャッシュするオブジェクトキャッシュ部品と、外部記憶のデータと永続化オブジェクトの間の変換を行うオブジェクト永続化処理部品のうち、少なくとも一方を、選択されたオブジェクト管理方法に対応する部品に切り替える。
【００１３】
オブジェクト管理方法は、システム内で使用されるオブジェクトを管理するアルゴリズムを表し、外部記憶に格納されたデータへのアクセス方法を含む。外部記憶は、例えば、二次記憶に対応する。
【００１４】
選択手段１は、選択したオブジェクト管理方法の情報を、直接、あるいは格納部を介して、切替手段２に通知する。切替手段２は、通知されたオブジェクト管理方法に従って、コンポーネント基盤が提供するオブジェクトキャッシュ部品とオブジェクト永続化処理部品の少なくとも一方を、コンポーネントの種類に適した部品に切り替える。オブジェクト管理装置は、こうして切り替えられた部品を用いて、永続化オブジェクトをキャッシュする。
【００１５】
このようなオブジェクト管理装置によれば、コンポーネント基盤の中で、コンポーネントの種類毎に、適切なオブジェクトキャッシュ部品およびオブジェクト永続化処理部品が自動的に組み込まれるので、個々のアプリケーションに適したキャッシング機構が自動的に提供される。
【００１６】
例えば、図１の選択手段１と切替手段２は、ぞれぞれ、後述する図２の選択部３６と切替部３７に対応する。
【００１７】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本実施形態においては、コンポーネント基盤が提供するキャッシング機構等のオブジェクト管理方法を、自動的にアプリケーションの性質に適したものに切り替える。アプリケーションの性質としては、そのアプリケーションが処理するデータの用途や処理方法等が含まれる。オブジェクト管理方法をアプリケーションに合わせて切り替えることで、これまでアプリケーション側で用意していたキャッシング機構が不要になり、アプリケーション開発の工数が削減される。
【００１８】
図２は、クライアント−サーバ間で情報処理を行う実施形態のシステムの基本構成図である。図２のシステムは、アプリケーション１１、コンポーネント基盤１２、および二次記憶１３を備える。アプリケーション１１は、クライアントアプリケーション２１とコンポーネント２２を含み、コンポーネント２２は、インタフェース２３および永続化オブジェクト２４を含む。
【００１９】
クライアントアプリケーション２１は、コンポーネント２２のインタフェース２３を介して、コンポーネント基盤１２にオブジェクトの検索、格納等の処理を依頼する。
【００２０】
また、コンポーネント基盤１２は、例えば、サーバのメモリ上に構築され、オブジェクト管理部３１と二次記憶インタフェース３２を含む。オブジェクト管理部３１は、インタフェース３３、オブジェクトキャッシュ部品３４、オブジェクト永続化処理部品３５、選択部３６、および切替部３７を含む。
【００２１】
コンポーネント基盤１２は、アプリケーション１１を構築し実行するための基盤となり、オブジェクト管理部３１は、アプリケーション１１からの要求に応じて、二次記憶１３内のデータに対応する永続化オブジェクト２４を検索したり、格納したりする処理を行う。また、二次記憶インタフェース３２は、オブジェクト管理部３１と二次記憶１３の間の入出力インタフェースとして動作する。二次記憶１３には、例えば、レコードの形式でデータが格納される。
【００２２】
インタフェース３３は、アプリケーション１１が永続化オブジェクト２４を取得・格納する方法を規定し、インタフェース２３とオブジェクトキャッシュ部品３４の間のインタフェースとして動作する。オブジェクトキャッシュ部品３４は、性能向上のために、オブジェクトの種類毎に特定の戦略でオブジェクトをキャッシュすることで、二次記憶１３へのアクセスの回数を削減する。オブジェクト永続化処理部品３５は、二次記憶１３内のデータとオブジェクトの間の変換を行う。
【００２３】
選択部３６は、例えば、ユーザからの指示に基づいて、あらかじめ用意された複数のオブジェクト管理方法の中から、コンポーネント２２の種類に適した方法を選択する。切替部３７は、選択されたオブジェクト管理方法に対応するオブジェクトキャッシュ部品３４とオブジェクト永続化処理部品３５を配置して、コンポーネント２２に適したキャッシング機構を自動的に生成する。これにより、オブジェクト管理部３１のオブジェクト管理方法が、コンポーネント２２に合わせて切り替えられる。
【００２４】
一般には、アプリケーション１１には１つ以上のコンポーネントが含まれるので、選択部３６は、コンポーネント毎に適切なオブジェクト管理方法を選択する。そして、切替部３７は、選択されたオブジェクト管理方法に対応するオブジェクトキャッシュ部品とオブジェクト永続化処理部品を配置して、コンポーネント毎のキャッシング機構を生成する。
【００２５】
例えば、アプリケーション１１が２つのコンポーネントを含む場合は、図３のようなシステムが構築される。図３のアプリケーション１１は、コンポーネント２２、２５を含み、コンポーネント２５は、インタフェース２６および永続化オブジェクト２７を含む。
【００２６】
この場合、選択部３６は、コンポーネント２２、２５のそれぞれに適したオブジェクト管理方法を選択する。そして、切替部３７は、コンポーネント２２、２５に対して、それぞれ、オブジェクトキャッシュ部品３４、３９とオブジェクト永続化処理部品３５、４０をコンポーネント基盤１２に組み込む。また、インタフェース３８は、インタフェース３３と同様に、インタフェース２６とオブジェクトキャッシュ部品３９の間のインタフェースとして動作する。
【００２７】
このように、アプリケーションの構成単位であるコンポーネント毎にオブジェクトキャッシュ部品とオブジェクト永続化処理部品を切り替えることで、コンポーネント毎に適切なキャッシング機構が生成される。これにより、アプリケーションの性質に適したオブジェクト管理が実現される。
【００２８】
ただし、切替部３７は、オブジェクトキャッシュ部品とオブジェクト永続化処理部品の両方をコンポーネント毎に切り替える必要はなく、必要に応じて、いずれか一方のみを切り替えることもできる。
【００２９】
ところで、選択部３６および切替部３７がコンポーネント毎のキャッシング機構を生成する方法としては、オブジェクトキャッシュ部品とオブジェクト永続化処理部品を自動生成する第１の方法と、あらかじめ用意された部品群の中からオブジェクトキャッシュ部品とオブジェクト永続化処理部品を選択する第２の方法が考えられる。第１の方法は、主に、アプリケーション１１の構築時に用いられ、第２の方法は、主に、アプリケーション１１の運用時に用いられる。
【００３０】
図４は、第１の方法に基づくシステムを示している。図４の切替部３７は、あらかじめオブジェクトキャッシュ部品３４とオブジェクト永続化処理部品３５のプログラムのテンプレートを保持している。選択部３６は、選択したオブジェクト管理方法を切替部３７に通知し、切替部３７は、通知されたオブジェクト管理方法を実現するオブジェクトキャッシュ部品３４とオブジェクト永続化処理部品３５を自動生成して、コンポーネント基盤１２に組み込む。
【００３１】
図５は、図４のオブジェクト管理部３１による組み込み処理のフローチャートである。ここでは、コンポーネント基盤１２上に処理対象の複数のコンポーネントが存在するものとする。
【００３２】
まず、選択部３６は、コンポーネント基盤１２上の１つのコンポーネントについてオブジェクト管理方法を選択する（ステップＳ１）。次に、切替部３７は、テンプレートを用いて、選択されたオブジェクト管理方法に合ったオブジェクトキャッシュ部品のプログラムを生成し（ステップＳ２）、その管理方法に合ったオブジェクト永続化処理部品のプログラムを生成する（ステップＳ３）。そして、生成した部品をコンポーネント基盤に組み込む（ステップＳ４）。
【００３３】
次に、選択部３６は、コンポーネント基盤１２上に未処理のコンポーネントがあるか否かをチェックし（ステップＳ５）、そのようなコンポーネントがあれば、ステップＳ１以降の処理を繰り返す。そして、すべてのコンポーネントについてオブジェクト管理方法が選択されると、処理を終了する。
【００３４】
このように、オブジェクトキャッシュ部品とオブジェクト永続化処理部品を自動生成することにより、これらの部品をあらかじめ用意する必要がなくなる。オブジェクトキャッシュ部品とオブジェクト永続化処理部品のプログラムおよびテンプレートの例については後述する。
【００３５】
図６は、第２の方法に基づくシステムを示している。図６のオブジェクト管理部３１は格納部４１を含み、選択部３６は、選択したオブジェクト管理方法を指定する情報を格納部４１に格納する。これにより、コンポーネント２２に適したオブジェクト管理方法が格納部４１に設定される。
【００３６】
切替部３７は、格納部４１からオブジェクト管理方法の情報を読込み、あらかじめ用意されたオブジェクトキャッシュ部品群４２およびオブジェクト永続化処理部品群４３から、それぞれ、設定されたオブジェクト管理方法を実現する部品を選択して、コンポーネント基盤１２に組み込む。
【００３７】
図７は、図６のオブジェクト管理部３１による組み込み処理のフローチャートである。ここでは、コンポーネント基盤１２上に処理対象の複数のコンポーネントが存在するものとする。図７のステップＳ１１、Ｓ１４、およびＳ１５の処理については、図５のステップＳ１、Ｓ４、およびＳ５の処理と同様である。
【００３８】
ステップＳ１１において、選択部３６がオブジェクト管理方法を選択すると、次に、切替部３７は、選択されたオブジェクト管理方法に合ったオブジェクトキャッシュ部品を部品群４２の中から選択する（ステップＳ１２）。そして、その管理方法に合ったオブジェクト永続化処理部品を部品群４３の中から選択して（ステップＳ１３）、ステップＳ１４以降の処理を行う。
【００３９】
このように、オブジェクトキャッシュ部品とオブジェクト永続化処理部品を部品群から選択することにより、プログラム自動生成のための処理を組み込む必要がなくなる。あらかじめ用意されるオブジェクトキャッシュ部品とオブジェクト永続化処理部品のプログラムの例については後述する。
【００４０】
選択部３６は、ユーザが指定したオブジェクト管理方法を選択する以外に、アプリケーション１１が指定したオブジェクト管理方法を選択することもできる。図８は、このようなシステムを示している。図８において、クライアントアプリケーション２１は、コンポーネント２２に適したオブジェクト管理方法を指定し、選択部３６は、その指定を受け付けて、指定されたオブジェクト管理方法を選択する。この選択方法によれば、ユーザは、コンポーネント毎にオブジェクト管理方法を指定する必要がなくなる。
【００４１】
また、選択部３６は、アプリケーションの用途をユーザに入力させ、入力された情報を基に適切なオブジェクト管理方法を選択することもできる。図９は、このようなシステムを示している。図９の選択部３６は、入力部５１、推論部５２、および推論ルール格納部５３を含む。
【００４２】
推論ルール格納部５３は、適切なオブジェクト管理方法を推論するための推論ルールを保持している。入力部５１は、ユーザが指定したコンポーネント２２の用途を入力し、推論部５２は、推論ルール格納部５３の推論ルールに従って、入力された用途からコンポーネント２２に適したオブジェクト管理方法を決定する。この選択方法によれば、ユーザは、コンポーネントの用途を指定するだけでよく、オブジェクト管理方法を指定する必要がなくなる。推論ルール格納部５３には、例えば、以下のような推論ルールが格納される。
ｉｆ  用途＝マスタ検索  ｔｈｅｎ
オブジェクトキャッシュ部品＝参照のみ部品
オブジェクト永続化処理部品＝利用データ項目絞込み部品
ｅｌｓｅ  ｉｆ  用途＝オンライン伝票処理  ｔｈｅｎ
オブジェクトキャッシュ部品＝トランザクション内キャッシュ部品
オブジェクト永続化処理部品＝全データ項目処理部品
ｅｌｓｅ  ｉｆ  用途＝バッチ伝票処理  ｔｈｅｎ
オブジェクトキャッシュ部品＝シーケンシャル処理部品
オブジェクト永続化処理部品＝利用データ項目絞込み部品
．．．
ここで、マスタ検索は、二次記憶１３から元データを読出す処理に対応し、オンライン伝票処理およびバッチ伝票処理は、業務システムにおける伝票データの参照・更新等の処理に対応する。
【００４３】
また、参照のみ部品は、オブジェクトのデータを更新せずに、参照のみを行うアプリケーションのために用意されたオブジェクトキャッシュ部品を表し、トランザクション内キャッシュ部品は、オブジェクトのデータの更新を行うアプリケーションのために用意されたオブジェクトキャッシュ部品を表す。シーケンシャル処理部品は、検索結果として返された複数のオブジェクトを順番に処理するアプリケーションのために用意されたオブジェクトキャッシュ部品を表す。
【００４４】
また、利用データ項目絞込み部品は、オブジェクトのデータのうち指定された項目についてのみ、二次記憶１３に対する書込み・読出しを行うオブジェクト永続化処理部品を表し、全データ項目処理部品は、オブジェクトのすべてのデータ項目について、二次記憶１３に対する書込み・読出しを行うオブジェクト永続化処理部品を表す。これらの部品の例については、後述することにする。
【００４５】
切替部３７は、選択部３６が選択したオブジェクト管理方法に基づいて切替を行う代わりに、あらかじめ決められたスケジュールに従って自動的に切替を行うこともできる。図１０は、このようなシステムを示している。図１０のオブジェクト管理部３１は、選択部３６に替えて、タイマ６１、切替スケジュール定義部６２、および切替スケジュール格納部６３を含む。
【００４６】
切替スケジュール定義部６２は、どのオブジェクト管理方法をいつ採用するか（どのオブジェクトキャッシュ部品とオブジェクト永続化処理部品をいつ使うか）を定義する切替スケジュール情報を生成し、切替スケジュール格納部６３に格納する。また、タイマ６１は、日時情報を生成して、切替部３７に出力する。切替部３７は、タイマ６１からの日時情報を参照しながら、切替スケジュール格納部６３の切替スケジュール情報に従って、オブジェクトキャッシュ部品とオブジェクト永続化処理部品を切り替える。
【００４７】
例えば、昼間はオンライン伝票処理を行い、夜間はバッチ伝票処理を行うようなシステムの場合、あらかじめ昼間と夜間で異なる部品を使用する切替スケジュールを用意しておく。このように、切替スケジュール情報に従って切替を行うことで、アプリケーションの運用時にオブジェクト管理方法を選択する必要がなくなる。
【００４８】
次に、図１１から図１８までを参照しながら、オブジェクトキャッシュ部品の例について説明する。
図１１は、トランザクション内キャッシュ部品の例を示している。図１１のオブジェクトキャッシュ部品７１は、オンライン伝票処理のように、オブジェクトのデータを更新するコンポーネントのために用意され、トランザクション毎にオブジェクトをキャッシュするキャッシュテーブルを持つ。そして、トランザクション開始後からキャッシュテーブルにオブジェクトを登録し、トランザクション終了時にキャッシュテーブルをクリアする。
【００４９】
ここでは、オブジェクトキャッシュ部品７１は、トランザクションＡ、Ｂ、およびＣにそれぞれ対応するキャッシュテーブル７２、７３、および７４を保持している。そして、各キャッシュテーブルには識別情報とともに永続化オブジェクトが登録される。このうち、トランザクションＣ用のキャッシュテーブル７４には、識別情報ＩＤ１、ＩＤ２、およびＩＤ３にそれぞれ対応する永続化オブジェクト７５、７６、および７７が登録されている。
【００５０】
その後、トランザクションＣがコミットまたはロールバックにより終了すると、オブジェクトキャッシュ部品７１は、図１２に示すように、キャッシュテーブル７４をクリアする。
【００５１】
このようなオブジェクトキャッシュ部品によれば、永続化オブジェクトがトランザクション毎にキャッシュされ、トランザクション終了時にはキャッシュが解放されるため、常に最新のデータに基づいて処理が行われる。
【００５２】
図１３は、参照のみ部品の例を示している。図１３のオブジェクトキャッシュ部品８２は、マスタ検索のように、オブジェクトのデータの参照のみを行うコンポーネントのために用意され、全トランザクション共通のキャッシュテーブルを持つ。そして、１つのトランザクションが終了してもキャッシュテーブルをクリアしない。したがって、他のトランザクションも同じキャッシュテーブルに登録されたオブジェクトを利用することができる。
【００５３】
ここでは、オブジェクトキャッシュ部品８１が保持するキャッシュテーブル８２には、図１１のキャッシュテーブル７４と同様に、永続化オブジェクト７５、７６、および７７が登録されている。その後、トランザクションＣが終了してもキャッシュテーブル８２はクリアされず、トランザクションＡおよびＢは、これらの永続化オブジェクトを参照することができる。
【００５４】
このようなオブジェクトキャッシュ部品によれば、永続化オブジェクトが複数のトランザクションに共通のキャッシュに保持されるので、それらのトランザクションが同じキャッシュを利用することができる。
【００５５】
図１４は、シーケンシャル処理部品の例を示している。図１４のオブジェクトキャッシュ部品９１は、バッチ伝票処理のように、オブジェクトの検索結果としてオブジェクトの集合が返されたとき、それらのオブジェクトを必ず順番に処理するようなコンポーネントのために用意される。そして、アプリケーション１１が集合の次の要素に対応するオブジェクトを取得しようとしたとき、直前まで使用していたオブジェクトのデータを二次記憶１３に書込み、次の要素のデータをそのオブジェクトに設定して、それをアプリケーション１１に返す。
【００５６】
まず、アプリケーション１１から検索要求があると、オブジェクトキャッシュ部品９１は、二次記憶１３からデータ集合を取得する。そして、対応するオブジェクトの集合を表す集合オブジェクト９２を生成して、それをアプリケーション１１に返す。このとき、図２の二次記憶インタフェース３２は、二次記憶１３からデータ集合の先頭部分または全部（データＤ１、Ｄ２、およびＤ３）を取得して、一時的に保持する。
【００５７】
次に、アプリケーション１１は、図１５に示すように、集合オブジェクト９２の最初のオブジェクトの取得を要求する。このとき、オブジェクトキャッシュ部品９１は、二次記憶インタフェース３２から最初のデータＤ１を永続化オブジェクト９３に設定し、永続化オブジェクト９３をアプリケーション１１に返す。
【００５８】
次に、アプリケーション１１は、図１６に示すように、集合オブジェクト９２の次のオブジェクトの取得を要求する。このとき、オブジェクトキャッシュ部品９１は、永続化オブジェクト９３のデータを二次記憶１３に書込む。そして、図１７に示すように、二次記憶インタフェース３２から２番目のデータＤ２を永続化オブジェクト９３に設定し、永続化オブジェクト９３をアプリケーション１１に返す。
【００５９】
以下、同様の処理が繰り返され、二次記憶インタフェース３２のデータがすべて永続化オブジェクト９３に設定されると、次の部分データが二次記憶１３から取得される。そして、データ集合のデータがすべて取得されると、処理が終了する。
【００６０】
このようなオブジェクトキャッシュ部品によれば、１つの永続化オブジェクトを繰り返し利用することで、データ集合をアプリケーションに渡すことができる。したがって、必要なオブジェクトの個数が最小化され、コンポーネント基盤１２の資源の利用効率が向上する。
【００６１】
図１８は、二次記憶１３のすべてのデータをキャッシュするオブジェクトキャッシュ部品を示している。図１８のオブジェクトキャッシュ部品１０１は、オブジェクトのデータの参照のみを行うコンポーネントのために用意され、参照されるオブジェクトに対応する二次記憶１３のデータ量が少ない場合に用いられる。そして、アプリケーション１１が検索要求を出す前に、あらかじめ二次記憶１３内のすべてのデータをキャッシュに登録しておく。
【００６２】
ここでは、二次記憶１３内のすべてのデータＤ１、Ｄ２、およびＤ３がそれぞれ永続化オブジェクト１０３、１０４、および１０５に変換され、キャッシュテーブル１０２に登録されている。このようなオブジェクトキャッシュ部品によれば、アプリケーション１１からの検索要求があると、直ちにデータを返すことができるため、処理が高速化される。
【００６３】
次に、図１９は、オブジェクト永続化処理部品の１つに対応する利用データ項目絞込み部品の例を示している。図１９の利用データ項目格納部１１１および利用データ項目指示部１１２は、それぞれ、図６の格納部４１および選択部３６に含まれる。利用データ項目指示部１１２は、コンポーネントの種類毎に利用されるオブジェクトのデータ項目を指定し、その情報を利用データ項目格納部１１１に格納する。オブジェクトのデータ項目は、例えば、二次記憶１３内のレコードのフィールド（属性）に対応する。
【００６４】
オブジェクトキャッシュ部品３４がキャッシュテーブル１１３に永続化オブジェクト１１４を登録するとき、オブジェクト永続化処理部品１１５は、利用データ項目格納部１１１を参照し、指定されたデータ項目のみを二次記憶１３から読出して、永続化オブジェクト１１４に書込む。また、オブジェクトキャッシュ部品３４が永続化オブジェクト１１４のデータを二次記憶１３に書込むとき、オブジェクト永続化処理部品１１５は、指定されたデータ項目のみを二次記憶１３に書込む。
【００６５】
ここでは、二次記憶１３内の各データは、Ａ１、Ａ２、およびＡ３の３つの属性から構成されており、オブジェクトキャッシュ部品３４は、識別情報ＩＤ１に対応するデータをキャッシュしている。
【００６６】
例えば、利用データ項目格納部１１１において、これらの３つの属性がデータ項目として指定されている場合、オブジェクト永続化処理部品１１５は、二次記憶１３からＩＤ１に対応する３つの属性“ａａａ”、“ｘ”、および“１０００”を読出し、永続化オブジェクト１１４の対応する属性に設定する。
【００６７】
また、利用データ項目格納部１１１において、属性Ａ１のみがデータ項目として指定されている場合、オブジェクト永続化処理部品１１５は、二次記憶１３からＩＤ１の属性Ａ１に対応する“ａａａ”のみを読出し、永続化オブジェクト１１４の属性Ａ１に設定する。
【００６８】
このようなオブジェクト永続化処理部品によれば、オブジェクトのデータを必要なデータ項目のみに絞込んで、読出し・書込みを行うことができる。このため、二次記憶１３とコンポーネント基盤１２の間のデータ転送が削減され、処理が高速化される。
【００６９】
次に、図２０から図２７までを参照しながら、コンポーネントおよびコンポーネント基盤の具体例について説明する。
図２０は、図３のシステムに対応するＥＪＢ（Enterprise JavaBeans）（商標）のモデルを示している。ここでは、エンティティビーン（Entity Bean ）が永続化オブジェクトに対応し、ＥＪＢコンテナ１２１がコンポーネント基盤１２に対応する。
【００７０】
コンポーネント２２は、ＥＪＢＯｂｊｅｃｔ１２２とエンティティビーン１２３を含み、コンポーネント２５は、ＥＪＢＯｂｊｅｃｔ１２４とエンティティビーン１２５を含む。ＥＪＢＯｂｊｅｃｔ１２２、１２４は、クライアントアプリケーション２１がエンティティビーン１２３、１２５にアクセスするためのインタフェースである。
【００７１】
また、インタフェース２３、３３は、ＥＪＢ  Ｈｏｍｅと呼ばれるインタフェースを構成し、クライアントアプリケーション２１からの検索要求等をオブジェクトキャッシュ部品３４に伝える。インタフェース２６、３８についても同様である。
【００７２】
オブジェクトキャッシュ部品３４は、特定の戦略でエンティティビーンをキャッシュし、オブジェクト永続化処理部品３５は、二次記憶１３内のデータとエンティティビーンの変換を行う。これにより、エンティティビーンのキャッシング機構が実現される。
【００７３】
切替部３７が、図４のようなプログラムの自動生成を行う場合、例えば、図２１および図２２のようなテンプレートを用いる。図２１および図２２は、それぞれ、オブジェクトキャッシュ部品およびオブジェクト永続化処理部品のテンプレートの例を示している。
【００７４】
図２１において、“＄＄Ｂｅａｎ＄＄”は、エンティティビーンのクラス名を表し、“＄＄ＰｒｉｍａｒｙＫｅｙ＄＄”は、エンティティビーンのキーのクラス名を表す。
【００７５】
また、図２２において、“＄＄ＢｅａｎＦｉｅｌｄＣｏｌｕｍｎｓ＄＄”は、エンティティビーンのデータが格納されるテーブルのカラム名の列を表し、“＄＄Ｔａｂｌｅ＄＄”は、エンティティビーンのデータが格納されるテーブルのテーブル名を表す。また、“＄＄ＰＫＦｉｅｌｄＣｏｌｕｍｎｓ＄＄”は、エンティティビーンのキーフィールドに対応するカラム名を表す。
【００７６】
このテンプレートでは、“／／＄＄  ｆｏｒｅａｃｈ  ＄＄ＢｅａｎＦｉｅｌｄ＄＄”と“／／＄＄  ｅｎｄ  ｆｏｒｅａｃｈ”の間の文が、エンティティビーンのフィールドの数だけ繰り返し展開される。“＄＄Ｎａｍｅ＄＄”は、エンティティビーンのフィールド名を表し、“＄＄Ｔｙｐｅ＄＄”は、フィールドの型を表し、“＄＄Ｃｏｕｎｔ＄＄”は、繰り返し回数を表す。
【００７７】
図２１のテンプレートからは、例えば、図２３のようなオブジェクトキャッシュ部品のプログラムが生成される。図２３のプログラムでは、“＄＄Ｂｅａｎ＄＄”および“＄＄ＰｒｉｍａｒｙＫｅｙ＄＄”が、それぞれ、“ＯｒｄｅｒＢｅａｎ”および“ＯｒｄｅｒＢｅａｎＰｒｉｍａｒｙＫｅｙ”に置き換えられている。
【００７８】
また、図２２のテンプレートからは、例えば、図２４のようなオブジェクト永続化処理部品のプログラムが生成される。図２４のプログラムでは、“＄＄Ｂｅａｎ＄＄”が“ＯｒｄｅｒＢｅａｎ”に置き換えられており、“＄＄ＢｅａｎＦｉｅｌｄＣｏｌｕｍｎｓ＄＄”が“ＩＤ，ＰＲＯＤＵＣＴ，ＱＵＡＮＴＩＴＹ”に置き換えられている。
【００７９】
また、“＄＄Ｔａｂｌｅ＄＄”および“＄＄ＰＫＦｉｅｌｄＣｏｌｕｍｎｓ＄＄”は、それぞれ、“ＯＲＤＥＲＴＡＢＬＥ”および“ＩＤ”に置き換えられている。
【００８０】
“ＯＲＤＥＲＴＡＢＬＥ”は、エンティティビーンであるＯｒｄｅｒＢｅａｎのデータを格納するテーブルのテーブル名であり、“ＩＤ”、“ＰＲＯＤＵＣＴ”、および“ＱＵＡＮＴＩＴＹ”は、このテーブルのカラム名である。このうち、“ＩＤ”がＯｒｄｅｒＢｅａｎのキーフィールドに対応する。
【００８１】
また、“／／＄＄  ｆｏｒｅａｃｈ  ＄＄ＢｅａｎＦｉｅｌｄ＄＄”から“／／＄＄  ｅｎｄ  ｆｏｒｅａｃｈ”までの部分は、ＯｒｄｅｒＢｅａｎのフィールドｉｄ、ｐｒｏｄｕｃｔ、およびｑｕａｎｔｉｔｙにデータを設定する文に置き換えられている。
【００８２】
また、切替部３７が、図６のような部品群を切り替える場合、例えば、図２１および図２２のような部品があらかじめ用意される。図２５および図２６は、それぞれ、オブジェクトキャッシュ部品およびオブジェクト永続化処理部品のプログラムの例を示している。
【００８３】
図２５のオブジェクトキャッシュ部品は、管理されるエンティティビーンの型に依存しない形で実現されている。これに対して、図２６のオブジェクト永続化処理部品は、エンティティビーンの情報（フィールドの名前、型等）を表すオブジェクト（ＣｌａｓｓＤｅｆ、ＦｉｅｌｄＤｅｆ等）に基づいて、二次記憶１３のデータとエンティティビーンのデータの間の変換を行う。
【００８４】
ところで、図２０のシステムにおいては、オブジェクトキャッシュ部品は、エンティティビーンだけでなく、それに関連するＥＪＢＯｂｊｅｃｔも、選択されたオブジェクト管理方法に合わせて管理することができる。図２７は、このようなキャッシング処理を示している。
【００８５】
図２７のオブジェクトキャッシュ部品１３１は、キャッシュテーブル１３２にエンティティビーンを登録するとき、それに対応するＥＪＢＯｂｊｅｃｔも一緒に登録する。ここでは、ＩＤ１に対応して、ＥＪＢＯｂｊｅｃｔ１３３とエンティティビーン１３４が登録されており、ＩＤ２に対応して、ＥＪＢＯｂｊｅｃｔ１３５とエンティティビーン１３６が登録されている。また、ＩＤ３に対応して、ＥＪＢＯｂｊｅｃｔ１３７とエンティティビーン１３８が登録されている。
【００８６】
このようなキャッシング機構によれば、エンティティビーンだけでなく、ＥＪＢＯｂｊｅｃｔも、選択されたオブジェクト管理方法に合わせて再利用することが可能になる。これにより、エンティティビーンとともに、対応するＥＪＢＯｂｊｅｃｔをアプリケーション１１に渡すことが可能になり、アプリケーション１１は、そのＥＪＢＯｂｊｅｃｔを介して直ちにエンティティビーンにアクセスすることができる。
【００８７】
なお、本実施形態のオブジェクト管理方法は、上述したＥＪＢに限らず、ＣＯＲＢＡ（common object request broker architecture ）等の任意のシステムのコンポーネント基盤に適用することができる。
【００８８】
また、本実施形態のシステムに含まれるクライアントおよびサーバは、例えば、図２８に示すような情報処理装置（コンピュータ）を用いて構成することができる。図２８の情報処理装置は、ＣＰＵ（中央処理装置）１４１、メモリ１４２、入力装置１４３、出力装置１４４、外部記憶装置１４５、媒体駆動装置１４６、およびネットワーク接続装置１４７を備え、それらはバス１４８により互いに接続されている。
【００８９】
メモリ１４２は、例えば、ＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含み、処理に用いられるプログラムとデータを格納する。ＣＰＵ１４１は、メモリ１４２を利用してプログラムを実行することにより、必要な処理を行う。
【００９０】
この場合、図２のアプリケーション１１、コンポーネント基盤１２、クライアントアプリケーション２１、コンポーネント２２、インタフェース２３、３３、永続化オブジェクト２４、オブジェクト管理部３１、二次記憶インタフェース３２、オブジェクトキャッシュ部品３４、オブジェクト永続化処理部品３５、選択部３６、および切替部３７と、図１０のタイマ６１および切替スケジュール定義部６２は、プログラムとしてメモリ１４２に格納される。また、メモリ１４２は、図６の格納部４１、図９の推論ルール格納部５３、図１０の切替スケジュール格納部６３、およびキャッシュテーブル等を保持する。
【００９１】
入力装置１４３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、オペレータ（ユーザまたはサーバの管理者）からの指示や情報の入力に用いられる。出力装置１４４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、オペレータへの問い合わせや処理結果の出力に用いられる。
【００９２】
外部記憶装置１４５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク（magneto-optical disk）装置、テープ装置等であり、図２の二次記憶１３として用いられる。また、情報処理装置は、この外部記憶装置１４５に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ１４２にロードして使用する。
【００９３】
媒体駆動装置１４６は、可搬記録媒体１４９を駆動し、その記録内容にアクセスする。可搬記録媒体１４９としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。オペレータは、この可搬記録媒体１４９に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ１４２にロードして使用する。
【００９４】
ネットワーク接続装置１４７は、ＬＡＮ（local area network）等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。また、情報処理装置は、上述のプログラムとデータをネットワーク接続装置１４７を介して他の装置から受け取り、必要に応じて、それらをメモリ１４２にロードして使用する。
【００９５】
図２９は、図２８の情報処理装置にプログラムとデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体１４９や外部のデータベース１５０に保存されたプログラムとデータは、メモリ１４２にロードされる。そして、ＣＰＵ１４１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００９６】
【発明の効果】
本発明によれば、コンポーネントを組み合わせてアプリケーションを構築し運用するシステムにおいて、個々のアプリケーションに適したキャッシング機構が、コンポーネント基盤により自動的に提供される。これにより、アプリケーション側でキャッシング機構を用意する必要がなくなり、アプリケーション開発が効率化される。
【図面の簡単な説明】
【図１】本発明のオブジェクト管理装置の原理図である。
【図２】第１のシステムの構成図である。
【図３】第２のシステムの構成図である。
【図４】第３のシステムの構成図である。
【図５】第１の組み込み処理のフローチャートである。
【図６】第４のシステムの構成図である。
【図７】第２の組み込み処理のフローチャートである。
【図８】第５のシステムの構成図である。
【図９】第６のシステムの構成図である。
【図１０】第７のシステムの構成図である。
【図１１】トランザクション内キャッシュ部品を示す図である。
【図１２】トランザクション終了時のキャッシュテーブルを示す図である。
【図１３】参照のみ部品を示す図である。
【図１４】シーケンシャル処理部品を示す図である。
【図１５】最初のオブジェクトの取得を示す図である。
【図１６】データの書込みを示す図である。
【図１７】２番目のオブジェクトの取得を示す図である。
【図１８】全データのキャッシングを示す図である。
【図１９】利用データ項目絞込み部品を示す図である。
【図２０】第８のシステムの構成図である。
【図２１】オブジェクトキャッシュ部品のテンプレートの例を示す図である。
【図２２】オブジェクト永続化処理部品のテンプレートの例を示す図である。
【図２３】オブジェクトキャッシュ部品の生成プログラム例を示す図である。
【図２４】オブジェクト永続化処理部品の生成プログラム例を示す図である。
【図２５】オブジェクトキャッシュ部品の例を示す図である。
【図２６】オブジェクト永続化処理部品の例を示す図である。
【図２７】インタフェースのキャッシングを示す図である。
【図２８】情報処理装置の構成図である。
【図２９】記録媒体を示す図である。
【符号の説明】
１  選択手段
２  切替手段
１１  アプリケーション
１２  コンポーネント基盤
１３  二次記憶
２１  クライアントアプリケーション
２２、２５  コンポーネント
２３、２６、３３、３８  インタフェース
２４、２７、７５、７６、７７、９３、１０３、１０４、１０５、１１４  永続化オブジェクト
３１  オブジェクト管理部
３２  二次記憶インタフェース
３４、３９、４２、７１、８１、９１、１０１、１３１  オブジェクトキャッシュ部品
３５、４０、４３、１１５  オブジェクト永続化処理部品
３６  選択部
３７  切替部
４１  格納部
５１  入力部
５２  推論部
５３  推論ルール格納部
６１  タイマ
６２  切替スケジュール定義部
６３  切替スケジュール格納部
７２、７３、７４、８２、１０２、１１３、１３２  キャッシュテーブル
９２  集合オブジェクト
１１１  利用データ項目格納部
１１２  利用データ項目指示部
１２１  ＥＪＢコンテナ
１２２、１２４、１３３、１３５、１３７  ＥＪＢＯｂｊｅｃｔ
１２３、１２５、１３４、１３６、１３８  エンティティビーン
１４１  ＣＰＵ
１４２  メモリ
１４３  入力装置
１４４  出力装置
１４５  外部記憶装置
１４６  媒体駆動装置
１４７  ネットワーク接続装置
１４８  バス
１４９  可搬記録媒体
１５０  データベース
【図１】
0004180247.tif 000002
【図２】
0004180247.tif 000003
【図３】
0004180247.tif 000004
【図４】
0004180247.tif 000005
【図５】
0004180247.tif 000006
【図６】
0004180247.tif 000007
【図７】
0004180247.tif 000008
【図８】
0004180247.tif 000009
【図９】
0004180247.tif 000010
【図１０】
0004180247.tif 000011
【図１１】
0004180247.tif 000012
【図１２】
0004180247.tif 000013
【図１３】
0004180247.tif 000014
【図１４】
0004180247.tif 000015
【図１５】
0004180247.tif 000016
【図１６】
0004180247.tif 000017
【図１７】
0004180247.tif 000018
【図１８】
0004180247.tif 000019
【図１９】
0004180247.tif 000020
【図２０】
0004180247.tif 000021
【図２１】
0004180247.tif 000022
【図２２】
0004180247.tif 000023
【図２３】
0004180247.tif 000024
【図２４】
0004180247.tif 000025
【図２５】
0004180247.tif 000026
【図２６】
0004180247.tif 000027
【図２７】
0004180247.tif 000028
【図２８】
0004180247.tif 000029
【図２９】
0004180247.tif 000030