第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更する除外部と、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加する追加部と、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更する第一の変更部と、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する第二の変更部とを有する情報処理装置。前記第一の変更部は、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合と当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合とを、前記連動オブジェクトに参照させ、前記連動オブジェクトを前記第一の属性に設定するように前記定義情報を変更し、前記連動オブジェクトは、前記第一の属性に対する変更要求に応じ、当該連動オブジェクトが参照する前記第二のクラスのオブジェクトの集合及び前記識別属性の値の集合を変更する請求項1記載の情報処理装置。前記第二の変更部は、前記第一の属性の取得要求に応じた処理について、前記第一の属性に前記連動オブジェクトが設定されている場合は、当該連動オブジェクトを返却し、前記第一の属性に前記連動オブジェクトが設定されていない場合は、前記第二の属性に設定されている前記識別属性の値の集合に対応する前記第二のクラスのオブジェクトの集合を永続化先より取得し、取得された該集合を前記連動オブジェクトに参照させ、該連動オブジェクトを返却するように、前記定義情報を変更する請求項2記載の情報処理装置。第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更し、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加し、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更し、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する処理をコンピュータが実行する情報処理方法。第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更し、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加し、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更し、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する処理をコンピュータに実行させるプログラム。他方において、RDBRelationalDatabase:関係データストアやKVSKeyValueStore:キーバリューストア等、特性の異なる複数のデータストアを併用することが、例えば、大規模なデータ処理が必要なシステムでは効果的であるとされている。そこで、斯かるシステムがオブジェクト指向プログラミングによって実装される場合、オブジェクト関係マッピングの実装以下、オブジェクト関係マッピング実装という。を利用して、各オブジェクトを特性の異なる複数のデータストアに分散して永続化することが考えられる。しかしながら、通常、参照関係にあるオブジェクト群は、単一のデータストア内に永続化される必要がある。これは、各参照関係の整合性参照先のオブジェクトがデータストア中に存在する状態を単一のデータストア内で保とうとするオブジェクト関係マッピングの参照整合性制約のためである。したがって、参照整合性制約の下では、参照関係にある各オブジェクトを各々異なるデータストアに永続化することはできない。具体的には、参照先が複数であるオブジェクト間の参照関係は、参照元のオブジェクトにおいて、参照先のオブジェクトへの参照オブジェクト参照を要素とするコレクション型のフィールド以下、参照要素コレクションフィールドという。によって保持される。参照参照とは、オブジェクトを参照することを表すデータである。参照の値は、例えば、参照先のオブジェクトのメモリアドレスである。また、フィールドとは、オブジェクトが有する属性項目をいい、メンバ変数とも呼ばれる。また、コレクションとは、リストやセット等、複数のデータを格納できるデータ構造体をいう。参照元のオブジェクトAをデータストアに永続化するには、オブジェクトAが有する参照要素コレクションフィールドが永続化対象としてオブジェクト関係マッピング実装に与えられる。しかし、オブジェクトAの永続化先のデータストアと、参照要素コレクションフィールドが参照するオブジェクト群の永続化先データストアが異なる場合、参照整合性制約により、オブジェクトAの永続化はエラーとなってしまう。そこで、1側面では、オブジェクト間の参照関係を複数のデータストアに跨って永続化することのできる情報処理装置、情報処理方法、及びプログラムの提供を目的とする。一つの案では、情報処理装置は、第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更する除外部と、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加する追加部と、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更する第一の変更部と、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する第二の変更部とを有する。一態様によれば、オブジェクト間の参照関係を複数のデータストアに跨って永続化することができる。以下、図面に基づいて本発明の実施の形態を説明する。図3は、本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。同図の情報処理装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。情報処理装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って情報処理装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。なお、記録媒体101の一例としては、CD-ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDDHardDiskDrive又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。図4は、本発明の実施の形態における情報処理装置の機能構成例を示す図である。同図において、情報処理装置10は、変更対象選択部11、クラス定義変更部12、連動コレクションオブジェクト生成部13、O/Rマッパーアクセス部14、O/Rマッパー部15a、及びO/Rマッパー部15b等を有する。これら各部は、情報処理装置10にインストールされたプログラムがCPU104に実行させる処理により実現される。また、情報処理装置10は、クラス定義ファイル記憶部21、オブジェクト配置定義記憶部22、データストア16a、及びデータストア16b等を有する。これら各記憶部又はデータストアは、補助記憶装置102又は情報処理装置10とネットワークを介して接続される記憶装置等を用いて実現可能である。データストア16a及びデータストア16b以下、双方を区別しない場合、データストア16という。は、オブジェクトの永続化先として利用される、データベース等のデータストアである。本実施の形態において、データストア16a及びデータストア16bは、参照関係にあるオブジェクト群を、該参照関係を跨って永続化先する。図5は、本実施の形態におけるオブジェクト間の参照関係の一例を示す図である。同図において、Departmentオブジェクトは、一つの部門を表現するDepartmentクラスのインスタンスである。DepartmentオブジェクトDepartmentクラスは、id又はemployees等をフィールド名とするフィールドを有する。フィールドとは、オブジェクトが有する属性の項目をいい、メンバ変数とも呼ばれる。Departmentオブジェクトのidフィールドは、部門を一意に識別する情報例えば、部門名を値とする。employeesフィールドは、Employeeオブジェクトへの参照オブジェクト参照を要素とするコレクション型のオブジェクトである参照要素コレクションオブジェクトへの参照オブジェクト参照を値とする。すなわち、employeesフィールドは、Employeeオブジェクトのオブジェクト参照の集合である。参照オブジェクト参照とは、オブジェクトを参照することを表すデータである。参照の値は、例えば、参照先のオブジェクトのメモリアドレスである。なお、employeesフィールドのように、他のオブジェクトへの参照を要素とするコレクション型のフィールドを、以下参照要素コレクションフィールドという。Employeeオブジェクトは、一人の従業員を表現するEmployeeクラスのインスタンスである。同図において、Employeeオブジェクトは、id又はname等をフィールド名とするフィールドを有する。Employeeオブジェクトのidフィールドは、従業員を一意に識別する情報例えば、社員番号等を値とする。nameフィールドは、従業員の氏名を値とする。同図において、Departmentオブジェクトは、emloyeesフィールドを介して、複数のEmployeeオブジェクトを参照している。すなわち、DepartmentオブジェクトとEmployeeオブジェクトとは、一対多の参照関係を有することが示されている。このことは、一つの部門に複数の従業員が属することを表現したものである。なお、本実施の形態において、各オブジェクトが表現する対象本実施の形態では、部門又は従業員を一意に識別可能なフィールドを、識別属性という。例えば、Employeeオブジェクトでは、idフィールドが識別属性に相当する。図4に戻る。データストア16aは、Departmentオブジェクトの永続化先として利用されるデータストアである。データストア16bは、Employeeオブジェクトの永続化先として利用されるデータストアである。データストア16aは、例えば、RDBRelationalDatabaseであってもよい。データストア16bは、例えば、KVSKeyValueStoreであてもよい。但し、データストア16a及びデータストア16bは、同様の形態のデータストアであってもよい。すなわち、双方がRDBであってもよいし、双方がKVSであってもよい。また、データストア16a及びデータストア16bは、RDBやKVS以外の形態のデータストアであってもよい。O/Rマッパー部15aは、DepartmentオブジェクトDepartmentクラスに関する、オブジェクト関係マッピングの実装である。すなわち、O/Rマッパー部15aは、Departmentオブジェクトに関して、データストア16aのレコードへの変換永続化や、データストア16aのレコードからの変換等を行う。O/Rマッパー部15bは、EmployeeオブジェクトEmployeeクラスに関する、オブジェクト関係マッピングの実装である。すなわち、O/Rマッパー部15bは、Employeeオブジェクトに関して、データストア16bのレコードへの変換や、データストア16aのレコードからの変換等を行う。なお、O/Rマッパー部15a及びO/Rマッパー部15bは、例えば、オブジェクト関係マッピングの標準仕様であるJPAJava登録商標PersistenceAPI及びJDOJava登録商標DataObjects等に準拠していてもよい。JPAに準拠する場合、O/Rマッパー部15a及びO/Rマッパー部15bは、EntityManagerに相当する。O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15b等の複数のO/Rマッパー部15をラッピングし、各オブジェクトの永続化先を各オブジェクトの利用者本実施の形態では、アプリケーションプログラム17から隠蔽する機能を有する。より詳しくは、O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bと同様のAPIApplicationProgramInterfaceを有し、永続化対象又はデータストア16からの取得対象のオブジェクトのクラスに応じて、O/Rマッパー部15a又はO/Rマッパー部15bに、永続化処理又は取得処理を委譲する。クラス定義ファイル記憶部21は、アプリケーションプログラム17から利用される各種のオブジェクトのクラスの定義情報が記録されたファイル以下、クラス定義ファイルという。を記憶する。クラスの定義情報とは、クラスが有するフィールド及びメソッド等に関する定義を示す情報をいう。すなわち、クラスの定義情報は、当該クラスのインスタンスであるオブジェクトの構造を示す情報であるともいえる。例えば、クラスの定義情報は、クラスのソースコードであってもよいし、Java登録商標バイトコードのように、クラスのソースコードがコンパイルされたものであって、かつ、編集可能なプログラム例えば、Java登録商標クラスファイルであってもよい。なお、アプリケーションプログラム17の機能は、所定のものに限定されない。アプリケーションプログラム17は、例えば、Webアプリケーションのように、クライアントからの要求に応じて処理を実行するアプリケーションであってもよいし、対話型のアプリケーションであってもよい。変更対象選択部11は、クラス定義ファイル記憶部21に記憶されているクラス定義ファイル群の中から、変更又は変換対象とするクラス定義ファイルを選択する。変更対象選択部11によって選択されたクラス定義ファイルを、以下、変更対象クラス定義ファイルという。本実施の形態では、他のクラスのオブジェクトを参照するクラスであって、当該他のクラスと永続化先のデータストア16が異なるクラスのクラス定義ファイルが、変更対象とされる。本実施の形態では、Departmentクラスのクラス定義ファイルが変更対象クラス定義ファイルとして選択される。なお、変更とは、クラス定義ファイルの内容の少なくとも一部を書き換えることをいう。クラス定義変更部12は、変更対象クラス定義ファイルに対して変更処理を実行し、変更後クラス定義ファイルf1を生成する。より詳しくは、クラス定義変更部12は、識別属性追加部121、参照属性除外部122、参照属性設定メソッド変更部123、及び参照属性取得メソッド変更部124等を含む。識別属性追加部121は、変更対象クラス定義ファイルに係るクラスのオブジェクトから参照されるオブジェクトの識別属性の値を要素とするコレクション型のオブジェクト以下、識別要素コレクションオブジェクトという。を値とするフィールド以下、識別要素コレクションフィールドという。の定義を、変更対象クラス定義ファイルに追加する。すなわち、本実施の形態において、識別属性追加部121は、Employeeオブジェクトのidフィールドの値を要素とする識別要素コレクションフィールドの定義を、Departmentクラスのクラス定義ファイルに対して追加する。図6は、Departmentオブジェクトに識別要素コレクションフィールドが追加された状態を示す図である。同図において、Departmentオブジェクトには、employeesIdsをフィールド名とするフィールドが追加されている。employeesIdsフィールドが、識別要素コレクションフィールドである。employeesIdsフィールドに設定代入される識別要素コレクションオブジェクトには、参照要素コレクションフィールドであるempoeesフィールドの要素であるEmployeeオブジェクトのidフィールドの値の集合が格納される。識別属性追加部121は、また、識別要素コレクションフィールドに関するsetterとgetterとを変更対象クラス定義ファイルに追加する。setterとは、当該setterが対応するフィールドへの値の設定要求を受け付けるメソッドである。getterとは、当該getterが対応するフィールドの値の取得要求を受け付けるメソッドである。参照属性除外部122は、変更対象クラス定義ファイルに含まれている、参照要素コレクションフィールドemployeesフィールドを、オブジェクト関係マッピングの実装O/Rマッパー部15aによる永続化の対象から除外するための処理を実行する。具体的には、参照属性除外部122は、変更対象クラス定義ファイルに含まれている参照要素コレクションフィールドに対して、永続化の対象外であることを示す修飾子後述されるTransientアノテーションを付加する。なお、Transientアノテーションは、JPAを用いる場合に有効な修飾子であり、例えば、JDOを用いる場合には、NotPersistentが当該修飾子として付加されればよい。参照要素コレクションフィールドが、永続化対象から除外されるのは、オブジェクト関係マッピングの参照整合性制約によるエラーの発生を回避するためである。すなわち、本実施の形態において、Departmentオブジェクトは、データストア16aに永続化され、Employeeオブジェクトは、データストア16bに永続化される。このような状況において、Departmentオブジェクトの参照要素コレクションフィールドであるemployeesフィールドが、O/Rマッパー部15aによってそのままデータストア16aに永続化される場合を考える。この場合、employeesフィールドによって参照される各Employeeオブジェクトは、上記参照整合性制約によって、データストア16aに存在することが要求される。しかし、Employeeオブジェクトは、データストア16aには永続化されないため、上記参照整合性制約を満たすことができない。その結果、Departmentオブジェクトの永続化はエラーとなってしまう。斯かる事態の発生を回避するため、参照要素コレクションフィールドは、永続化対象から除外されるのである。参照要素コレクションフィールドが永続化対象から除外される代わりに、Departmentオブジェクトが参照する各Employeeオブジェクトの識別属性の値を要素とする識別要素コレクションフィールドが、永続化される。その結果、DepartmentオブジェクトとEmployeeオブジェクトとの参照関係が、双方のオブジェクトの永続化によって失われてしまうことを回避することができる。後述されるように、永続化される識別要素コレクションフィールドに基づいて、永続後の各Departmentオブジェクトの参照先であるEmployeeオブジェクトを特定することができるからである。なお、識別要素コレクションフィールドがO/Rマッパー部15aを介してデータストア16aに永続化されたとしても、参照整合性制約によるエラーは発生しない。識別要素コレクションフィールドの要素は、参照ではなく、文字列又は数値等の一般的なデータ型の値である。したがって、O/Rマッパー部15aやデータストア16aは、識別要素コレクションフィールドを、単なる文字列又は数値等の集合として扱うからである。参照属性設定メソッド変更部123は、変更対象クラス定義ファイルにおける、参照要素コレクションフィールドのsetterの定義内容に関して変更を行う。すなわち、本実施の形態において、参照属性設定メソッド変更部123は、Departmentオブジェクトのemployeesフィールドに関するsetterの定義内容に関して変更を行う。具体的には、参照属性設定メソッド変更部123は、例えば、図7に示されるような状態のDepartmentオブジェクト及びEmployeeオブジェクトに関して、図8に示されるような参照関係が形成されるように、当該setterの定義内容を変更する。図7は、参照要素コレクションフィールドのsetterの呼び出し前のDepartmentオブジェクトの状態を示す図である。同図におけるDepartmentオブジェクトにおいて、employeesフィールド及びemployeesIdsフィールドの値は空である。例えば、Departmentオブジェクトが生成された直後の状態を想定するとよい。このような状態において、Departmentオブジェクトの参照要素コレクションフィールドemployeesフィールドのsetterの引数に、同図に示される指定される参照要素コレクションオブジェクトが指定されると、変更後のsetterは、図8に示されるような状態を生成する。図8は、参照要素コレクションフィールドのsetterの呼び出し後のDepartmentオブジェクトの状態を示す図である。変更後のsetterは、呼び出しに応じ、連動コレクションオブジェクトの生成を連動コレクションオブジェクト生成部13に実行させる。同図に示されるように、連動コレクションオブジェクトは、vals又はidsをフィールド名とするフィールドを有する。valsフィールドには、当該setterの引数に指定された参照要素コレクションオブジェクトへの参照が設定される。また、idsフィールドには、参照要素コレクションオブジェクトから参照されている各Employeeオブジェクトのidフィールドの値を要素とする識別要素コレクションオブジェクトへの参照が設定される。当該識別要素コレクションオブジェクトへの参照は、DepartmentオブジェクトのemployeesIdsフィールドにも設定される。更に、連動コレクションオブジェクトへの参照が、Departmentオブジェクトのemployeesフィールドに設定される。以上の結果、図8に示されるような、参照関係が形成される。参照属性取得メソッド変更部124は、変更対象クラス定義ファイルにおける、参照要素コレクションフィールドのgetterの定義内容に関して変更を行う。すなわち、本実施の形態において、参照属性取得メソッド変更部124は、Departmentオブジェクトのemployeesフィールドに関するgetterの定義内容に関して変更を行う。具体的には、参照属性取得メソッド変更部124は、当該getterについて、Departmentオブジェクトのemployeesフィールドに連動コレクションオブジェクトへの参照が設定されている場合には、当該連動コレクションオブジェクトへの参照を返却するように定義内容を変更する。employeesフィールドに連動コレクションオブジェクトへの参照が設定されている場合とは、例えば、Departmentオブジェクトが、図8に示されるような状態を有する場合である。また、参照属性取得メソッド変更部124は、当該getterについて、employeesフィールドに連動コレクションオブジェクトへの参照が設定されていない場合は、次のような処理を実行するように定義内容を変更する。図9は、employeesフィールドに連動コレクションオブジェクトへの参照が設定されていないDepartmentオブジェクトの状態を示す図である。同図のDepartmentオブジェクトにおいて、employeesフィールドの値は空である。一方、employeesIdsフィールドには、識別要素コレクションオブジェクトへの参照が設定されている。例えば、同図は、データストア16aに永続化されていたDepartmentオブジェクトが、データストア16aより取得された直後の状態を示す。Departmentオブジェクトが図9に示される状態である場合、変更後のgetter内では、識別要素コレクションオブジェクトに含まれている各数値オブジェクトをキーとして、Employeeオブジェクト群が、O/Rマッパー部15bを介してデータストア16bより取得される。更に、取得されたEmployeeオブジェクトを要素とする参照要素コレクションオブジェクトが生成される。また、連動コレクションオブジェクトが生成され、当該連動コレクションオブジェクトのvalsフィールドに、当該参照要素コレクションオブジェクトへの参照が設定される。また、当該連動コレクションオブジェクトのidsフィールドには、図9に示される識別要素コレクションオブジェクトへの参照が設定される。また、当該連動コレクションオブジェクトへの参照が、Departmentオブジェクトのemployeesフィールドに設定される。その結果、変更後のgetterの呼び出しに応じ、図8において説明した状態が生成される。なお、変更後のgetterは、employeesフィールドの値、すなわち、連動コレクションオブジェクトへの参照を、返却する。後述されるように、連動コレクションオブジェクトは、参照要素コレクションオブジェクトと同じインタフェースListインタフェースを実装する。したがって、当該getterの呼び出し元のアプリケーションプログラム17は、返却された連動コレクションオブジェクトを参照要素コレクションオブジェクトとして扱う。このことは、変更対象クラス定義ファイルの変更に関して、アプリケーションプログラム17のソースコード等は影響を受けないことを意味する。例えば、アプリケーションプログラム17は、連動コレクションオブジェクトに対して、Employeeオブジェクトの取得、追加、又は削除を要求する。斯かる要求に応じて、連動コレクションオブジェクトは、次のように振る舞う。図10は、連動コレクションオブジェクトを説明するための図である。同図に示されるように、連動コレクションオブジェクトは、Employeeオブジェクトの取得、追加、又は削除の要求に応じた処理を、valsフィールドに設定されている参照要素コレクションオブジェクトに委譲する。したがって、参照要素コレクションオブジェクトにおいて、Employeeオブジェクトの取得、追加、又は削除が実行される。連動コレクションオブジェクトは、更に、参照要素コレクションオブジェクトにおけるEmployeeオブジェクトの追加又は削除を、idsフィールドに設定されている識別要素コレクションオブジェクトに反映する。具体的には、連動コレクションオブジェクトは、追加対象のEmployeeオブジェクトのidフィールドの値を、当該識別要素コレクションオブジェクトに追加する。また、連動コレクションオブジェクトは、削除対象のEmployeeオブジェクトのidフィールドの値を、当該識別要素コレクションオブジェクトより削除する。連動コレクションオブジェクトに上記のような処理を実行させるために、例えば、連動コレクションオブジェクトのクラス連動コレクションクラスは、図11に示されるように定義される。図11は、連動コレクションクラスの定義例を示す図である。同図では、連動コレクションクラスのクラス名は、MetaListである例が示されている。同図において、記述316は、MetaListクラス連動コレクションクラスが、コレクション型の一例であるListインタフェースを実装することを示す。なお、後述されるように、参照要素コレクションオブジェクトも、Listインタフェースを実装する。記述d311は、valsフィールドの定義である。記述d312は、idsフィールドの定義である。記述d313は、idsフィールドのgetterである、getIdsメソッドの定義である。なお、idsフィールドのsetter、並びにvalsフィールドのgetter及びsetterに関する定義は、便宜上省略されている。記述d314は、Listインタフェースにおいて定義されているaddメソッドの実装である。addメソッドは、引数に指定される、MetaEntityインタフェースを実装するクラスのオブジェクトの追加要求に応じた処理を実行する。MetaListクラスのaddメソッドには、識別要素コレクションオブジェクト及び参照要素コレクションオブジェクトのそれぞれへの要素の追加処理が定義されている。記述d315は、Listインタフェースにおいて定義されているremoveメソッドの実装である。MetaListクラスのremoveメソッドは、引数に指定される、MetaEntityインタフェースを実装するクラスのオブジェクトの削除要求に応じた処理を実行する。MetaListクラスのremoveメソッドには、識別要素コレクションオブジェクト及び参照要素コレクションオブジェクトのそれぞれからの要素の削除処理が定義されている。なお、本実施の形態では、Employeeオブジェクトが、addメソッド及びremoveメソッド等の引数に指定される。すなわち、Employeeクラスは、MetaEntityインタフェースを実装する。このように、連動コレクションオブジェクトは、参照要素コレクションオブジェクトと、識別要素コレクションオブジェクトとの状態を連動又は同期させ、その結果として、双方の間に常に整合性が確保されるようする。連動コレクションオブジェクトの導入意義又は存在意義の一つは、例えば、次の通りである。オブジェクト指向プログラムにおいて、或るオブジェクトのフィールドの値は、ローカル変数一時的に利用可能なデータ格納域等に代表される左辺値に代入することが可能である。このような性質は、コレクションオブジェクトへの参照を値とするフィールドに関しても同様である。したがって、例えば、Departmentオブジェクトが図6に示されるような状態において、emploeesフィールドに関する変更前のgetterの呼び出されたとする。この場合、emploeesフィールドに設定されている参照要素コレクションオブジェクトへの参照が、getterの呼び出し元のアプリケーションプログラム17のローカル変数に代入される可能性がある。そして、アプリケーションプログラム17によって、当該ローカル変数を介して、参照要素コレクションフィールドへのEmployeeオブジェクトの追加又は削除等が実行される可能性がある。しかしながら、Departmentオブジェクトは、当該ローカル変数を介した参照要素コレクションフィールドへのEmployeeオブジェクトの追加又は削除を検知することはできない。当該ローカル変数は、Departmentオブジェクトとは関係を有さないからである。したがって、参照要素コレクションフィールドに追加されたEmployeeオブジェクトのidフィールドの値は、識別要素コレクションフィールドには追加されない。その結果、参照要素コレクションフィールドと識別要素コレクションフィールドとの間に不整合が発生してしまう。上記したように、参照要素コレクションフィールドと識別要素コレクションフィールドとのうち、永続化の対象とされるのは、識別要素コレクションフィールドのみである。そうすると、参照要素コレクションフィールドに対する変更が、正しく永続化されないことになってしまう。すなわち、一般的にダーティチェックと呼ばれる機能を有効に作用させることができなくなってしまう。ダーティチェックとは、メモリ上におけるオブジェクト間の参照関係と、データストアにおいて永続化されているレコード間の参照関係との間の差分を自動的に検出し、当該差分をデータストアに反映する機能をいう。一方、Departmentオブジェクトが、図8に示されるような状態であれば、emploeesフィールドに関する変更後のgetterの呼び出しによって、連動コレクションオブジェクトへの参照が、getterの呼び出し元のアプリケーションプログラム17のローカル変数に代入される。そして、当該ローカル変数を介したEmployeeオブジェクトの追加又は削除等は、図10において説明したように、連動コレクションオブジェクトによって、参照要素コレクションオブジェクト及び識別要素コレクションオブジェクトの双方に反映される。その結果、ダーティチェックを有効に作用させることができる。このような理由から、本実施の形態では、連動コレクションオブジェクトが導入されているのである。以下、情報処理装置10が実行する処理手順について説明する。図12は、変更対象クラス定義ファイルの選択処理の処理手順の一例を説明するためのフローチャートである。ステップS101において、変更対象選択部11は、クラス定義ファイル記憶部21に記憶されているクラス定義ファイル群の中から一つのクラス定義ファイルを選択して当該クラス定義ファイルを読み込む。選択されたクラス定義ファイルに係るクラスを、以下対象クラスという。例えば、Departmentクラスのクラス定義ファイルが選択された場合、図13に示される定義情報が読み込まれる。図13は、Departmentクラスのクラス定義ファイルの定義例を示す図である。同図に示されるクラス定義ファイルC1において、記述d111は、idフィールドの定義である。記述d112は、idフィールドのgetterである、getIdメソッドの定義である。記述d113は、idフィールドのsetterである、setIdメソッドの定義である。記述d114は、参照要素コレクションフィールドである、employeesフィールドの定義である。すなわち、employeesフィールドは、Employeeオブジェクトへの参照を要素とするList型のフィールドである。なお、List型とは、コレクション型の一種である。記述d115は、employeesフィールドのgetterである、getEmployeesメソッドの定義である。記述d116は、employeesフィールドのsetterである、setEmployeesメソッドの定義である。記述d117は、MetaEntityインタフェースにおいて定義されている、getPrimaryKeyメソッドに対する実装である。すなわち、記述d118において、Departmentクラスは、JPAで定義されているMetaEntityインタフェースを実装することが示されている。したがって、Departmentクラスは、MetaEntityインタフェースで定義されているメソッドの実装を含むのである。なお、getPrimaryKeyメソッドは、プライマリキーすなわち、オブジェクトごとに一意な識別属性の値を返却するメソッドである。したがって、Deparmentクラスにおいて実装されたgetPrimaryKeyメソッドでは、idフィールドの値が返却される。また、Employeeクラスのクラス定義ファイルが選択された場合、図14に示される定義情報が読み込まれる。図14は、Employeeクラスのクラス定義ファイルの定義例を示す図である。同図に示されるクラス定義ファイルC2において、記述d211は、idフィールドの定義である。記述d212は、idフィールドのgetterである、getIdメソッドの定義である。記述d213は、idフィールドのsetterである、setIdメソッドの定義である。記述d214は、MetaEntityインタフェースにおいて定義されている、getPrimaryKeyメソッドに対する実装である。すなわち、記述d215において、Employeeクラスは、MetaEntityインタフェースを実装することが示されている。したがって、Employeeクラスは、MetaEntityインタフェースで定義されているメソッドの実装を含むのである。Employeeクラスにおいて実装されたgetPrimaryKeyメソッドでは、idフィールドの値が返却される。続いて、変更対象選択部11は、対象クラス定義ファイルには、オブジェクトへの参照を要素とするコレクション型のフィールド参照要素コレクションフィールドが有るか否かを判定するS102。当該判定は、例えば、OneToManyアノテーションが付加されているフィールドの有無に基づいて行われる。すなわち、OnToManyアノテーションは、当該アノテーションが付加されたフィールドが一対多の参照関係を保持するためのフィールドであることを示す修飾子である。図13に示される、Departmentクラスのクラス定義ファイルC1には、記述d114においてOnToManyアノテーションが含まれている。したがって、クラス定義ファイルC1が対象クラス定義ファイルである場合、ステップS102の判定はYesとなる。一方、図14に示される、Employeeクラスのクラス定義ファイルC2には、OnToManyアノテーションは含まれていない。したがって、クラス定義ファイルC2が対象クラス定義ファイルである場合、ステップS102の判定はNoとなる。なお、OnToManyアノテーションの有無ではなく、コレクション型のフィールドであって、コレクションの要素が他のクラスのオブジェクトへの参照であるフィールドの有無に基づいてステップS102の判定が行われてもよい。すなわち、Departmentクラスのクラス定義ファイルC1図13の記述d114には、Employeeクラスのオブジェクトへの参照を要素とするコレクション型List型のemploeesフィールドが含まれている。したがって、クラス定義ファイルC1に関して、ステップS102の判定はYesとなる。一方、Employeeクラスのクラス定義ファイルC2図14には、参照を要素とするコレクション型のフィールドは含まれていない。したがって、クラス定義ファイルC2に関して、ステップS102の判定はNoとなる。対象クラス定義ファイルに参照要素コレクションフィールドが有る場合S102でYes、変更対象選択部11は、対象クラス定義ファイルに係るクラス以下、対象クラスという。のオブジェクトの永続化先と、当該参照要素コレクションフィールドにおいて参照先として指定されているクラス以下、参照先クラスという。のオブジェクトの永続化先とが異なるか否かを判定するS103。当該判定は、オブジェクト配置定義記憶部22を参照して行われる。図15は、オブジェクト配置定義記憶部の構成例を示す図である。同図において、オブジェクト配置定義記憶部22は、永続化対象とされるオブジェクトのクラスごとに、クラス名、O/RマッパーID、及び永続化ユニット名等を記憶する。クラス名は、永続化対象とされるオブジェクトのクラスの名前である。O/RマッパーIDは、各クラスのオブジェクトの永続化等を実行するO/Rマッパー部15の識別子である。本実施の形態では、Departmentクラスのオブジェクトは、O/Rマッパー部15aによって永続化される。Employeeクラスのオブジェクトは、O/Rマッパー部15bによって永続化される。したがって、Departmentクラスに対しては、O/Rマッパー部15aのO/RマッパーIDが記憶され、Employeeクラスに対しては、O/Rマッパー部15bのO/RマッパーIDが記憶されている。永続化ユニット名は、永続化ユニットの名前である。永続化ユニットとは、JPAにおいて、O/Rマッパー部15に対する設定情報が記述されたファイルをいう。例えば、各O/Rマッパー部15は、永続化ユニットに記述された設定情報に基づいて、永続化先のデータストア16の識別等を行う。オブジェクト配置定義記憶部22において、O/RマッパーIDが異なるということは、永続化先が異なるということになる。したがって、上記したステップS103において、変更対象選択部11は、対象クラスに対応するO/RマッパーIDと、参照先クラスに対応するO/RマッパーIDとが異なるか否かに基づいて、双方のクラスのオブジェクトの永続化先の異同を判定する。例えば、対象クラスがDepartmentクラスの場合、クラス定義ファイルC1図13の記述d114より、参照先クラスはEmployeeクラスである。そして、図15に示されるオブジェクト配置定義記憶部22において、Departmentクラスに対するO/RマッパーIDと、Employeeクラスに対するO/RマッパーIDとは異なる。したがって、対象クラスのオブジェクトの永続化先と、参照先クラスのオブジェクトの永続化先とは異なると判定される。対象クラスのオブジェクトの永続化先と、参照先クラスのオブジェクトの永続化先とが異なる場合S103でYes、変更対象選択部11は、対象クラス定義ファイルを、変更対象であると判定するS104。すなわち、対象クラス定義ファイルは、変更対象クラス定義ファイルとして選択される。具体的には、対象クラス定義ファイルが、変更対象クラス定義ファイルが格納されるべき所定のフォルダにコピーされてもよい。または、変更対象選択部11が、対象クラス定義ファイルに関する変更処理の実行を、クラス定義変更部12に要求してもよい。一方、対象クラスのオブジェクトの永続化先と、参照先クラスのオブジェクトの永続化先とが同じである場合S103でNo、変更対象選択部11は、対象クラス定義ファイルは、変更対象ではないと判定する。この場合、対象クラスのオブジェクトと参照先クラスのオブジェクトとは、単一のデータストア16に永続化され、参照整合性制約に違反することはないからである。なお、図12の処理は、クラス定義ファイル記憶部21に記憶されている各クラス定義ファイルについて実行される。したがって、複数のクラス定義ファイルが変更対象クラス定義ファイルとして選択される可能性も有る。続いて、変更対象クラス定義ファイルの変更処理について説明する。図16は、変更対象クラス定義ファイルの変更処理の処理手順の一例を説明するためのシーケンス図である。同図の処理は、図12の処理と同期的に実行されてもよいし、図12の処理と非同期に実行されてもよい。例えば、図12のステップS104において、変更対象選択部11からクラス定義変更部12に対して変更処理の実行が要求される場合、図16の処理は、そのときの対象クラス定義ファイルを処理対象として図12の処理と同期的に実行される。一方、図12のステップS104において、変更対象クラス定義ファイルが、所定のフォルダにコピーされる場合、図16の処理は、当該フォルダにコピーされた一以上の変更対象クラス定義ファイルに関してバッチ的に実行されてもよい。いずれの場合であっても、図16の処理は、変更対象クラス定義ファイルのロード時に実行されてもよい。変更対象クラス定義ファイルのロード時とは、変更対象クラス定義ファイルに定義されたクラスを利用する、アプリケーションプログラム17が起動されるときをいう。なお、Java登録商標であれば、Java登録商標クラスファイルがクラス定義ファイルの一例である。Java登録商標クラスファイルの内容は、Java登録商標コンパイラによってコンパイルされたバイトコードであるが、コードインジェクション機構等を利用して、ロード時に書き換え可能である。コードインジェクション機構とは、Java登録商標クラスファイルを入力とし、オリジナルのプログラムとは異なるプログラムを挿入したり、ロジックを変更したり、フィールド又はメソッド等のプログラム要素にアノテーションを追加したりできる機構である。ステップS111において、クラス定義変更部12は、一つの変更対象クラス定義ファイルに対する変更処理を、識別属性追加部121に要求する。ここでは、Departmentクラスのクラス定義ファイルC1が変更処理の対象とされた場合を例とする。続いて、識別属性追加部121は、例えば、コードインジェクション機構を用いて、変更対象クラス定義ファイルにおける参照要素コレクションフィールドに対応する識別要素コレクションフィールドを、変更対象クラス定義ファイルに追加するS112。この際、識別属性追加部121は、当該識別要素コレクションフィールドのsetter及びgetterの定義も、変更対象クラス定義ファイルに追加する。図17は、識別要素コレクションフィールドの追加後のDepartmentクラスのクラス定義ファイルの定義例を示す図である。図17中、図13と同一部分には同一符号を付し、その説明は省略する。図17中、記述d121、記述d122、及び記述d123が、ステップS112において追加される部分である。すなわち、記述d121に示されるemployeesIdsフィールドは、記述d114に示されるemployeesフィールドに対応する識別要素コレクションフィールドである。記述d122に示されるgetEmployeesIdsメソッドは、employeesIdsフィールドのgetterである。記述d122に示されるsetEmployeesIdsメソッドは、employeesIdsフィールドのsetterである。なお、employeesIdフィールドの要素の型は、String型文字列型とされている。これは、参照先であるEmployeeクラスの識別属性の型が、String型であるからである。Employeeクラスのフィールドのうち、いずれのフィールドが識別属性であるかは、Idアノテーションに基づいて判定される。すなわち、Idアノテーションが付加されているフィールドが、識別属性のフィールドであると判定される。Employeeクラスのクラス定義ファイルC2図14では、記述d211におけるidフィールドにIdアノテーションが付加されている。したがって、idフィールドが識別属性であると判定される。また、idフィールドの型は、String型である。したがって、employeesIdフィールドの要素の型は、String型とされる。なお、仮に、図17に示される定義情報に基づいて生成されるDepartmentオブジェクトは、図6に示されるような参照関係を形成する。続いて、クラス定義変更部12は、参照属性除外部122に対して、変更対象クラス定義ファイルに対する変更処理の実行を要求するS113。参照属性除外部122は、例えば、コードインジェクション機構を用いて、変更対象クラス定義ファイルにおける参照要素コレクションフィールドを永続化対象から除外するための定義を、変更対象クラス定義ファイルに追加するS114。続いて、クラス定義変更部12は、参照属性設定メソッド変更部123に対して、変更対象クラス定義ファイルに対する変更処理の実行を要求するS115。参照属性設定メソッド変更部123は、例えば、コードインジェクション機構を用いて、変更対象クラス定義ファイルにおける、参照要素コレクションフィールドのsetterの定義内容に関して変更を行うS116。すなわち、参照要素コレクションフィールドと、識別要素コレクションフィールドとの整合性が保持されるようにするための処理が参照要素コレクションフィールドのsetterに追加される。続いて、クラス定義変更部12は、参照属性取得メソッド変更部124に対して、変更対象クラス定義ファイルに対する変更処理の実行を要求するS117。参照属性取得メソッド変更部124は、例えば、コードインジェクション機構を用いて、変更対象クラス定義ファイルにおける、参照要素コレクションフィールドのgetterの定義内容に関して変更を行うS118。すなわち、参照要素コレクションフィールドと、識別要素コレクションフィールドとの整合性が保持されるようにするための処理が参照要素コレクションフィールドのgetterに追加される。図18は、参照要素コレクションフィールドに関して変更が行われた後のDepartmentクラスのクラス定義ファイルの定義例を示す図である。同図のクラス定義ファイルC1は、図17に示されるクラス定義ファイルC1に対して、ステップS113~S118が実行された結果を示す。図18中、図17と同一部分には同一符号を付し、その説明は省略する。図18では、図17における記述d114、記述d115、記述d116のそれぞれが、記述d114a、記述d115a、記述d116aに変更されている。すなわち、記述d114aには、ステップS114の実行によって、Transientアノテーションが付加されている。Transientアノテーションは、当該アノテーションが付加されたフィールドを永続化対象から除外することを示す修飾子である。すなわち、O/Rマッパー部15aやO/Rマッパー部15bは、オブジェクトを永続化する際、Transientアノテーションが付加されたフィールドを永続化対象から除外する。また、記述d116aには、ステップS116の実行によって、下線部分が追加されている。下線部分には、図7に示される参照関係を、図8に示される参照関係に変更するための処理手順が記述されている。更に、記述d115aには、ステップS118の実行によって、下線部分が追加されている。下線部分には、employeesフィールドに連動コレクションオブジェクトへの参照が設定されている場合に、当該連動コレクションオブジェクトへの参照を返却するための処理手順が記述されている。employeesフィールドに連動コレクションオブジェクトへの参照が設定されている場合とは、図8に示される参照関係が形成されている場合をいう。また、当該下線部分には、employeesフィールドに連動コレクションオブジェクトへの参照が設定されていない場合に、図8に示される参照関係を形成して連動コレクションオブジェクトへの参照を返却するための処理手順が記述されている。なお、employeesフィールドに連動コレクションオブジェクトへの参照が設定されていない場合とは、Departmentオブジェクトが、図9に示される状態を有する場合である。以上でDepartmentクラスのクラス定義ファイルC1の変更処理は終了する。すなわち、図18に示されるクラス定義ファイルC1は、本実施の形態において、Departmentクラスに関する変更後クラス定義ファイルf1である。以下、図18に示されるクラス定義ファイルC1を、変更後クラス定義ファイルf1という。続いて、変更後クラス定義ファイルf1に基づいて生成されるオブジェクの永続化時に実行される処理手順について説明する。図19及び図20は、オブジェクトの永続化時の処理手順の一例を説明するためのシーケンス図である。図19及び図20は、オブジェクトの永続化が行われる一つのシナリオに関する処理手順を説明するものであり、オブジェクトの永続化が常に当該処理手順によって実行されることを示すものではない。ステップS201において、アプリケーションプログラム17は、例えば、参照要素コレクションオブジェクトを生成する。当該参照要素コレクションオブジェクトは、例えば、アプリケーションプログラム17のローカル変数によってその参照が保持される。続いて、アプリケーションプログラム17は、一以上のEmployeeオブジェクトを生成するS202。当該Employeeオブジェクトは、図14に示されるラス定義ファイルC2の定義情報に基づいて生成される。続いて、アプリケーションプログラム17は、ステップS202において生成されたEmployeeオブジェクトへの参照を、ステップS201において生成された参照要素コレクションオブジェクトの要素として追加する。続いて、アプリケーションプログラム17は、Departmentオブジェクトを生成するS204。当該Dpartmentブジェクトは、変更後クラス定義ファイルf1図18の定義情報に基づいて生成される。続いて、アプリケーションプログラム17は、Departmentオブジェクトのemployeesフィールドのsetterである、setEmployeesメソッドを呼び出すS205。setEmployeesメソッドの引数には、参照要素コレクションオブジェクトが指定される。続いて、Departmentオブジェクトは、呼び出されたsetEmployeesメソッド内において、図18の記述d116aに定義された処理を実行する。すなわち、Departmentオブジェクトは、連動コレクションオブジェクトの生成を、連動コレクションオブジェクト生成部13に要求するS206。当該要求には、setEmployeesメソッドの引数に指定された参照要素コレクションオブジェクトが指定される。続いて、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトを生成するS207。続いて、連動コレクションオブジェクト生成部13は、識別要素コレクションオブジェクトを生成するS208。この時点において、生成された各オブジェクトの状態は、例えば、図21に示される通りである。図21は、各オブジェクトの状態の例を示す第一の図である。同図に示されるように、ステップS208の直後においては、Departmentオブジェクト、参照要素コレクションオブジェクト、Employeeオブジェクト、連動コレクションオブジェクト、及び識別要素コレクションオブジェクトが生成されている。各Employeeオブジェクトは、参照要素コレクションオブジェクトの要素として追加されている。したがって、参照要素コレクションオブジェクトは、各Employeeオブジェクトを参照している。他のオブジェクト間には参照関係は形成されていない。また、識別要素コレクションオブジェクトには、要素は追加されていない。続いて、連動コレクションオブジェクト生成部13は、参照要素コレクションオブジェクトの要素である各Employeeオブジェクトから、idフィールドの値識別属性の値を取得するS209。続いて、連動コレクションオブジェクト生成部13は、取得された各idフィールドの値を、識別要素コレクションオブジェクトに追加するS210。その結果、各オブジェクトの状態は、例えば、図22に示されるようになる。図22は、各オブジェクトの状態の例を示す第二の図である。同図に示されるように、ステップS210が実行されることにより、識別要素コレクションオブジェクトには、各Employeeオブジェクトのidフィールドの値が要素として追加されている。続いて、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトのvalsフィールドに、参照要素コレクションオブジェクトへの参照を設定代入する。また、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトのidsフィールドに、識別要素コレクションオブジェクトへの参照を設定代入するS211。その結果、各オブジェクトの状態は、例えば、図23に示されるようになる。図23は、各オブジェクトの状態の例を示す第三の図である。同図に示されるように、ステップS211の実行により、連動コレクションオブジェクトから識別要素コレクションオブジェクト及び参照要素コレクションオブジェクトへの参照関係が形成されている。なお、図23に示される状態で、連動コレクションオブジェクトへの参照が、setEmployeesメソッドの戻り値として、連動コレクションオブジェクト生成部13からDepartmentオブジェクトへ返却される。続いて、Departmentオブジェクトは、参照要素コレクションフィールドであるemployeesフィールドに、連動コレクションオブジェクトへの参照を代入する。また、Departmentオブジェクトは、識別要素コレクションフィールドであるemployeesIdsフィールドに、連動コレクションオブジェクトのvalsフィールドの値、すなわち、識別要素コレクションオブジェクトへの参照を代入するS212。その結果、各オブジェクトの状態は、図8において説明した通りとなる。以上で、ステップS205において呼び出された、setEmployeesメソッドの処理は終了する。すなわち、ステップS205~S212までが、図18の記述d116aに定義された処理である。setEmployeesメソッドの処理の終了結果、処理の制御は、アプリケーションプログラム17に復帰する。続いて、アプリケーションプログラム17は、O/Rマッパーアクセス部14に、トランザクションの開始を要求する図20:S213。当該トランザクションは、Departmentオブジェクト及びEmployeeオブジェクト等をデータストア16a又はデータストア16bに永続化するためのトランザクションである。続いて、O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bのそれぞれに、トランザクションの開始を要求するS214、S215。続いて、アプリケーションプログラム17は、O/Rマッパーアクセス部14に、各Employeeオブジェクトの永続化を要求するS216。O/Rマッパーアクセス部14は、例えば、オブジェクト配置定義記憶部22を参照して、Employeeオブジェクトに対応するO/Rマッパー部15はO/Rマッパー部15bであると判定する。そこで、O/Rマッパーアクセス部14は、各Employeeオブジェクトの永続化をO/Rマッパー部15bに要求するS217。続いて、アプリケーションプログラム17は、O/Rマッパーアクセス部14に、Departmentオブジェクトの永続化を要求するS218。O/Rマッパーアクセス部14は、例えば、オブジェクト配置定義記憶部22を参照して、Departmentオブジェクトに対応するO/Rマッパー部15はO/Rマッパー部15aであると判定する。そこで、O/Rマッパーアクセス部14は、Departmentオブジェクトの永続化をO/Rマッパー部15aに要求するS217。続いて、アプリケーションプログラム17は、トランザクションのコミットトランザクションの内容のデータストア16への反映をO/Rマッパーアクセス部14に要求するS220。O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bのそれぞれに対し、にトランザクションのコミットを要求するS221、S222。その結果、O/Rマッパー部15bによって、各Employeeオブジェクトは、データストア16bのレコードに変換されて永続化される。また、O/Rマッパー部15aによって、Departmentオブジェクトは、データストア16aのレコードに変換されて永続化される。但し、Departmentオブジェクトの参照要素コレクションフィールドであるemployeesフィールドは、変更後クラス定義ファイルf1図18の記述d114aのTransientアノテーションに基づいて、永続化対象から除外される。ステップS222の実行直後において、各データストア16aには、例えば、図24に示されるように、Departmentオブジェクト及びEmployeeオブジェクトが永続化される。図24は、Departmentオブジェクト及びEmployeeオブジェクトの永続化状態の例を示す図である。同図において、データストア16bには、図5に示される状態の各Employeeオブジェクトが永続化された例が示されている。すなわち、二つのEmployeeオブジェクトのそれぞれに対応するレコードが、データストア16bのレコードに生成されている。また、二つのEmployeeオブジェクトのidフィールド及びnameフィールドの値が、各レコードの項目の値として永続化されている。また、データストア16aには、図5に示される状態のDepartmentオブジェクトが永続化された例が示されている。すなわち、当該Departmentオブジェクトに対応するレコードが、データストア16aに生成されている。また、当該Departmentオブジェクトのidフィールド及びemployeesIdsフィールドの値が、当該レコードの項目として永続化されている。なお、employeesIdsフィールドについては、識別要素コレクションオブジェクトの要素である各文字列オブジェクト値が、永続化されている。O/Rマッパー部15aやデータストア16aから見た場合、employeesIdsフィールドの値は、単なる文字列の集合であり、他のオブジェクトへの参照としての意味を有さない。また、上記したように、参照要素コレクションフィールドであるemploeesフィールドは、永続化の対象とはされない。したがって、参照整合性制約に違反することなく、かつ、employeesIdsフィールドの値によってEmployeeオブジェクトへの参照関係が維持されたまま、Departmentオブジェクトを永続化することができる。続いて、永続化されているオブジェクトの取得時に実行される処理手順について説明する。図25~図27は、永続化されているオブジェクトの取得時の処理手順の一例を説明するためのシーケンス図である。図25~図27は、オブジェクトの取得が行われる一つのシナリオに関する処理手順を説明するものであり、オブジェクトの取得が常に当該処理手順によって実行されることを示すものではない。ステップS301において、アプリケーションプログラム17は、トランザクションの開始をO/Rマッパーアクセス部14に要求する。当該トランザクションは、Departmentオブジェクト及びEmployeeオブジェクト等をデータストア16a又はデータストア16bより取得するためのトランザクションである。続いて、O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bのそれぞれに、トランザクションの開始を要求するS302、S303。続いて、アプリケーションプログラム17は、Departmentオブジェクトの取得をO/Rマッパーアクセス部14に要求するS304。当該要求には、取得対象のDepartmentオブジェクトを特定するための情報として、idフィールドの値が指定される。例えば、idフィールドの値が人事部であるDepartmentオブジェクトの取得が要求される。O/Rマッパーアクセス部14は、例えば、オブジェクト配置定義記憶部22を参照して、Departmentオブジェクトに対応するO/Rマッパー部15はO/Rマッパー部15aであると判定する。そこで、O/Rマッパーアクセス部14は、O/Rマッパー部15aに、idフィールドの値が人事部であるDepartmentオブジェクトの取得を要求するS305。続いて、O/Rマッパー部15aは、id項目の値が人事部であるレコードをデータストア16aより検索し、当該レコード図24に基づいて、idフィールドの値が人事部であるDepartmentオブジェクトを生成するS306。続いて、O/Rマッパー部15aは、当該レコードのemployeesIds項目の値を格納するための識別要素コレクションオブジェクトを生成するS307。続いて、O/Rマッパー部15aは、当該レコードのemployeesIds項目に記憶されている各文字列に対応する文字列オブジェクトを、当該DepartmentオブジェクトのemployeesIdsフィールドの要素として追加するS308。なお、ステップS308の実行直後のDepartmentオブジェクトの状態は、例えば、図9に示した通りである。図9に示される状態のDepartmentオブジェクトが、O/Rマッパーアクセス部14を介して、アプリケーションプログラム17に返却される。その結果、処理の制御は、アプリケーションプログラム17に復帰する。続いて、アプリケーションプログラム17が、当該DepartmentオブジェクトのemployeeIdsフィールドに関するgetterである、getEmployeesを呼び出したとする図26:S309。Departmentオブジェクトは、呼び出されたgetEmployeesメソッド内において、図18の記述d115aに定義された処理を実行する。すなわち、Departmentオブジェクトは、連動コレクションオブジェクトの生成を連動コレクションオブジェクト生成部13に要求するS310。当該要求には、employeesIdsフィールドに設定されている識別要素コレクションオブジェクトへの参照が引数として指定される。続いて、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトを生成するS311。続いて、連動コレクションオブジェクト生成部13は、参照要素コレクションオブジェクトを生成するS312。続いて、連動コレクションオブジェクト生成部13は、引数に指定された識別要素コレクションオブジェクトの各要素である文字列すなわち、Employeeオブジェクトのidフィールドの値を取得するS313。続いて、連動コレクションオブジェクト生成部13は、取得された文字列をidフィールドの値とするEmployeeオブジェクトの取得を、O/Rマッパーアクセス部14に要求するS314。O/Rマッパーアクセス部14は、例えば、オブジェクト配置定義記憶部22を参照して、Employeeオブジェクトに対応するO/Rマッパー部15はO/Rマッパー部15bであると判定する。そこで、O/Rマッパーアクセス部14は、O/Rマッパー部15bに、当該文字列をidフィールドの値とするEmployeeオブジェクトの取得を要求するS315。続いて、O/Rマッパー部15bは、id項目の値が当該文字列と一致するレコードをデータストア16bより検索し、当該レコード図24に基づいて、idフィールドの値が当該文字列であるEmployeeオブジェクトを生成するS316。なお、ステップS314~S316は、ステップS313において取得された文字列の数だけ実行される。その結果、当該文字列の数だけEmployeeオブジェクトが生成される。続いて、連動コレクションオブジェクト生成部13は、生成された各Employeeオブジェクトを、参照要素コレクションオブジェクトの要素として追加するS317。この時点で、各オブジェクトの状態は、例えば、図28に示されるようになる。図28は、各オブジェクトの状態の例を示す第四の図である。同図に示されるように、図25の処理によって取得されたDepartmentオブジェクトに加え、連動コレクションオブジェクト、参照要素コレクションオブジェクトが生成されている。また、各Employeeオブジェクが、データストア16bより取得され、参照要素コレクションオブジェクトの要素とされている。なお、連動コレクションオブジェクト生成部13は、ステップS314のタイミングで、データストア16bからのEmployeeオブジェクトの取得をおこなわなくてもよい。その後に連動コレクションオブジェクトに対してEmployeeオブジェクトの取得が要求された際に、データストア16bからEmployeeオブジェクトが取得されてもよい。続いて、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトのvalsフィールドに、参照要素コレクションオブジェクトへの参照を代入する。また、連動コレクションオブジェクト生成部13は、連動コレクションオブジェクトのidsフィールドに、識別要素コレクションオブジェクトへの参照を代入するS318。その結果、各オブジェクトの状態は、例えば、図29に示されるようになる。図29は、各オブジェクトの状態の例を示す第五の図である。同図に示されるように、ステップS318の実行により、連動コレクションオブジェクトから識別要素コレクションオブジェクト及び参照要素コレクションオブジェクトへの参照関係が形成されている。なお、図29に示される状態で、連動コレクションオブジェクトへの参照が、連動コレクションオブジェクト生成部13からDepartmentオブジェクトへ返却される。続いて、Departmentオブジェクトは、参照要素コレクションフィールドであるemployeesフィールドに、連動コレクションオブジェクトへの参照を代入するS319。その結果、各オブジェクトの状態は、図8において説明した通りとなる。なお、図8に示される状態の連動コレクションオブジェクトへの参照が、ステップS309において呼び出されたgetEmployeesの戻り値として、アプリケーションプログラム17に返却される。すなわち、ステップS310~S319までが、図18の記述115aに定義された処理である。続いて、アプリケーションプログラム17は、トランザクションのコミットをO/Rマッパーアクセス部14に要求するS320。O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bのそれぞれに対し、にトランザクションのコミットを要求するS321、S322。このように、Departmentオブジェクトの参照要素コレクションフィールドが永続化の対象から除外されたとしても、識別要素コレクションフィールドに基づいて、DepartmentオブジェクトとEmployeeオブジェクトとの参照関係を復元することができる。続いて、ダーティチェック時に実行される処理手順について説明する。ダーティチェック時に実行される処理手順とは、Departmentオブジェクト又はEmployeeオブジェクトに対する変更内容がデータストア16a又はデータストア16bへ反映される際に実行される処理手順である。図30及び図31は、ダーティチェック時に実行される処理手順の一例を説明するためのシーケンス図である。図30及び図31は、ダーティチェックが行われる一つのシナリオに関する処理手順を説明するものであり、ダーティチェックが常に当該処理手順によって実行されることを示すものではない。なお、図30に示される処理手順の前に、図25及び図26において説明した処理手順S301~S319が実行され、図8に示される状態の連動レコクションオブジェクトがアプリケーションプログラム17に返却されていることとする。ステップS319に続いて、アプリケーションプログラム17は、DepartmentオブジェクトのgetEmployeesメソッドの戻り値として返却された連動コレクションオブジェクトを、ローカル変数に代入するS420。その結果、図8に示される各オブジェクトの状態は、図32に示されるものへ変化する。図32は、各オブジェクトの状態の例を示す第六の図である。同図では、連動コレクションオブジェクトへの参照が、ローカル変数に代入されている状態が示されている。なお、アプリケーションプログラム17の開発者は、getEmployeesメソッドの戻り値が連動コレクションオブジェクトであることは意識していない。すなわち、getEmployeesメソッドは、Departmentオブジェクトにおける参照要素コレクションフィールドのgetterである。したがって、アプリケーションプログラム17の開発者は、getEmployeesメソッドの戻り値を、参照要素コレクションオブジェクトへの参照として扱う。続いて、アプリケーションプログラム17は、Employeeオブジェクトを新たに生成するS421。続いて、アプリケーションプログラム17は、生成されたEmployeeオブジェクトへの参照が代入されたローカル変数を指定して、連動コレクションオブジェクトに対して当該Employeeオブジェクトの追加を要求するS422。続いて、連動コレクションオブジェクトは、追加要求に指定されたローカル変数に格納されているEmployeeオブジェクトへの参照を、当該連動コレクションオブジェクトのvalsフィールドに設定されている参照要素コレクションオブジェクトの要素として追加するS423。続いて、連動コレクションオブジェクトは、当該Employeeオブジェクトのidフィールドの値を、当該連動コレクションオブジェクトのidsフィールドに設定されている識別要素コレクションオブジェクトの要素として追加するS424。上記の処理の結果、各オブジェクトの状態は、図32に示されるものから図33に示されるものへと変化する。図33は、各オブジェクトの状態の例を示す第七の図である。同図では、参照要素コレクションオブジェクトの要素に、新たに生成された、idフィールドの値が500であるEmployeeオブジェクトへの参照が追加されている。また、当該Employeeオブジェクトのidフィールドの値を示す文字列オブジェクトが、識別要素コレクションオブジェクトの要素として追加されている。その結果、参照要素コレクションオブジェクトと識別要素コレクションオブジェクトとの整合性が維持されている。続いて、アプリケーションプログラム17は、新たに生成されたEmployeeオブジェクトの永続化をO/Rマッパーアクセス部14に要求する図31:S425。O/Rマッパーアクセス部14は、例えば、オブジェクト配置定義記憶部22を参照して、Employeeオブジェクトに対応するO/Rマッパー部15はO/Rマッパー部15bであると判定する。そこで、O/Rマッパーアクセス部14は、当該Employeeオブジェクトの永続化をO/Rマッパー部15bに要求するS426。続いて、アプリケーションプログラム17は、トランザクションのコミットをO/Rマッパーアクセス部14に要求するS427。O/Rマッパーアクセス部14は、O/Rマッパー部15a及びO/Rマッパー部15bのそれぞれに対し、にトランザクションのコミットを要求するS428、S430。この際、O/Rマッパー部15aによるコミットの実行時に、DepartmentオブジェクトのemployeeIdsフィールドに関して、データストア16aの内容との差分が検出される。すなわち、employeeIdsフィールドに設定されている識別要素コレクションオブジェクトに新たに追加されたidフィールドの値500が、差分として検出される。そこで、O/Rマッパー部15aは、当該差分をデータストア16aに反映させる。すなわち、データストア16aにおいて、id項目の値が人事部であるレコードのemployeesIds項目に、当該差分である値500が追加される。O/Rマッパー部15aによるこのような処理は、ダーティチェックと呼ばれるO/Rマッパー部15の標準的な機能で実現可能である。その結果、Departmentオブジェクト及びEmployeeオブジェクトの永続化状態は、例えば、図24に示されるものから図34に示されるものへ変化する。図34は、ダーティチェック後のDepartmentオブジェクト及びEmployeeオブジェクトの永続化状態の例を示す図である。同図では、データストア16aにおける、idの値が人事部であるDepartmentオブジェクト対応するレコードのemployeesIds項目に対して、500が追加されている。また、データストア16bに、id項目の値が500であるEmployeeオブジェクトに対応するレコードが追加されている。このように、本実施の形態では、参照要素コレクションオブジェクトの代わりに連動コレクションオブジェクトをアプリケーションプログラム17の操作対象とすることにより、参照要素コレクションオブジェクトと識別要素コレクションオブジェクトとの整合性を維持することができる。その結果、ダーティチェックを有効に機能させることができる。なお、本実施の形態では、便宜上、DepartmentオブジェクトからEmployeeオブジェクトへの片方向の一対多の参照関係に関して説明したが、本実施の形態は、双方向の一対多の参照関係、又は双方向の多対多の参照関係に関しても適用可能である。上述したように、本実施の形態によれば、片方向一対多、双方向1対多、又は双方向多対多等の参照関係を有し、相互に永続化先が異なるオブジェクト群について、参照整合性制約に違反することなく、かつ、当該参照関係を維持した状態で、永続化を行うことができる。換言すれば、オブジェクト間の参照関係を複数のデータストアに跨って永続化することができる。また、参照先のクラス例えば、Employeeクラスのオブジェクトを参照する参照元のクラス例えば、Departmentクラスの参照要素コレクションフィールドのsetterに関して、参照要素コレクションフィールドと識別要素コレクションフィールドとの整合性が維持されるようにクラス定義ファイルが自動的に変更される。したがって、当該setterの呼び出しに応じて、参照要素コレクションフィールドと識別要素コレクションフィールドとの間に不整合が発生するのを回避することができる。また、参照要素コレクションフィールドと識別要素コレクションフィールドとの整合性を維持するために連動コレクションオブジェクトが導入され、参照要素コレクションフィールドのgetterでは、連動コレクションオブジェクトが返却される。そして、連動コレクションオブジェクトは、参照元のオブジェクト参照要素コレクションオブジェクトと、識別要素コレクションオブジェクトとを参照する。このことは、連動コレクションオブジェクトは、実質的に、参照元のオブジェクトの参照コレクションフィールド及び識別要素コレクションフィールドを参照することを意味する。更に、連動コレクションオブジェクトは、参照要素コレクションオブジェクトと同じインタフェースListインタフェースを実装し、当該インタフェースを介したオブジェクトの追加又は削除等を、参照元のオブジェクトの参照要素コレクションオブジェクト及び識別要素コレクションオブジェクトに反映する。すなわち、当該インタフェースを介したオブジェクトの追加又は削除等は、参照元のオブジェクトの参照要素コレクションフィールド及び識別要素コレクションフィールドに反映される。したがって、当該参照要素コレクションフィールドのgetterの戻り値がローカル変数等に代入された場合であっても、当該ローカル変数を介して行われる参照要素コレクションオブジェクトに関する変更要求を、参照元のオブジェクトの参照要素コレクションフィールド及び子識別要素コレクションフィールドの双方に反映させることができる。なお、本実施の形態において、連動コレクションオブジェクトへの参照は、参照元のオブジェクトDepartmentオブジェクトの参照要素コレクションフィールドに設定代入される例を示した。しかし、連動コレクションオブジェクトへの参照は、必ずしも参照要素コレクションフィールドに設定されなくてもよい。例えば、連動コレクションオブジェクトへの参照が設定されるフィールド以下、連動コレクションフィールドという。が、参照元のオブジェクトのクラスに別途追加されてもよい。この場合、参照要素コレクションフィールドのgetter内においては、連動コレクションフィールドに設定されている連動コレクションオブジェクトを返却するようにすればよい。但し、連動コレクションフィールドを設ける場合、クラス定義ファイルの変更に関して、連動コレクションフィールドを追加する処理が必要とされる。また、参照要素コレクションフィールに加えて、連動コレクションフィールドも永続化対象から除去するようにする必要がある。すなわち、クラス定義ファイルに対する変更箇所が増加するという不都合がある。また、連動コレクションフィールドのデータサイズ分だけオブジェクトのデータサイズが大きくなってしまうというという不都合もある。一方、本実施の形態のように、参照要素コレクションフィールドに連動コレクションオブジェクトへの参照が設定される形態では、上記のような不都合はない。したがって、このような点において、参照要素コレクションフィールドに連動コレクションオブジェクトへの参照が設定される形態は、優れているといえる。また、本実施の形態によって得られる他の効果として、複数のデータストアを跨いだ参照関係の永続化が可能となることにより、積極的に複数データストアの再構成を行なえることが挙げられる。したがって、各々の構成のパフォーマンスを計測し、最適な構成を発見するための作業が容易になることが期待できる。また、KVSのように、本来であれば参照関係を管理できない非関係データストアであっても、RDB等の関係データストアのように使用することができるといった、非関係データストアの適用範囲の拡大への貢献も期待できる。なお、本実施の形態において、Departmentクラスは、第一のクラスの一例である。Employeeクラスは、第二のクラスの一例である。クラス定義ファイルは、第一のクラスの定義情報の一例である。参照属性除外部122は、除外部の一例である。識別属性追加部121は、追加部の一例である。参照属性設定メソッド変更部123は、第一の変更部の一例である。参照属性取得メソッド変更部124は、第二の変更部の一例である。連動コレクションオブジェクトは、連動オブジェクトの一例である。以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形変更が可能である。以上の説明に関し、更に以下の項を開示する。付記1第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更する除外部と、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加する追加部と、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更する第一の変更部と、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する第二の変更部とを有する情報処理装置。付記2前記第一の変更部は、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合と当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合とを、前記連動オブジェクトに参照させ、前記連動オブジェクトを前記第一の属性に設定するように前記定義情報を変更し、前記連動オブジェクトは、前記第一の属性に対する変更要求に応じ、当該連動オブジェクトが参照する前記第二のクラスのオブジェクトの集合及び前記識別属性の値の集合を変更する付記1記載の情報処理装置。付記3前記第二の変更部は、前記第一の属性の取得要求に応じた処理について、前記第一の属性に前記連動オブジェクトが設定されている場合は、当該連動オブジェクトを返却し、前記第一の属性に前記連動オブジェクトが設定されていない場合は、前記第二の属性に設定されている前記識別属性の値の集合に対応する前記第二のクラスのオブジェクトの集合を永続化先より取得し、取得された該集合を前記連動オブジェクトに参照させ、該連動オブジェクトを返却するように、前記定義情報を変更する付記2記載の情報処理装置。付記4第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更し、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加し、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更し、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する処理をコンピュータが実行する情報処理方法。付記5前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について変更する処理は、当該集合と当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合とを、前記連動オブジェクトに参照させ、前記連動オブジェクトを前記第一の属性に設定するように前記定義情報を変更し、前記連動オブジェクトは、前記第一の属性に対する変更要求に応じ、当該連動オブジェクトが参照する前記第二のクラスのオブジェクトの集合及び前記識別属性の値の集合を変更する付記4記載の情報処理方法。付記6前記第一の属性の取得要求に応じた処理について変更する処理は、前記第一の属性に前記連動オブジェクトが設定されている場合は、当該連動オブジェクトを返却し、前記第一の属性に前記連動オブジェクトが設定されていない場合は、前記第二の属性に設定されている前記識別属性の値の集合に対応する前記第二のクラスのオブジェクトの集合を永続化先より取得し、取得された該集合を前記連動オブジェクトに参照させ、該連動オブジェクトを返却するように、前記定義情報を変更する付記5記載の情報処理方法。付記7第一のクラスの属性のうち、第二のクラスのオブジェクトの集合である第一の属性が、永続化対象から除外されるように前記第一のクラスの定義情報を変更し、前記第二のクラスのオブジェクトの識別属性の値の集合である第二の属性を前記定義情報に追加し、前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について、当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合を前記第二の属性に設定するように、前記定義情報を変更し、前記第一の属性の取得要求に応じた処理について、前記第一の属性に対する変更要求を前記第一の属性及び前記第二の属性に反映させる連動オブジェクトを返却するように、前記定義情報を変更する処理をコンピュータに実行させるプログラム。付記8前記第一の属性に対する前記第二のクラスのオブジェクトの集合の設定要求に応じた処理について変更する処理は、当該集合と当該集合に含まれるそれぞれの前記第二のクラスのオブジェクトの前記識別属性の値の集合とを、前記連動オブジェクトに参照させ、前記連動オブジェクトを前記第一の属性に設定するように前記定義情報を変更し、前記連動オブジェクトは、前記第一の属性に対する変更要求に応じ、当該連動オブジェクトが参照する前記第二のクラスのオブジェクトの集合及び前記識別属性の値の集合を変更する付記7記載のプログラム。付記9前記第一の属性の取得要求に応じた処理について変更する処理は、前記第一の属性に前記連動オブジェクトが設定されている場合は、当該連動オブジェクトを返却し、前記第一の属性に前記連動オブジェクトが設定されていない場合は、前記第二の属性に設定されている前記識別属性の値の集合に対応する前記第二のクラスのオブジェクトの集合を永続化先より取得し、取得された該集合を前記連動オブジェクトに参照させ、該連動オブジェクトを返却するように、前記定義情報を変更する付記8記載のプログラム。