(57)【要約】【課題】Ｏ／Ｒマッピング分野においてＪａｖａの生産性を向上させる。【解決手段】テーブル設計書読込装置１０１が、テーブルがテーブル設計書１００を読み込み、ソース生成制御装置１０２が、テーブル設計書１００のテーブルのカラムの組み合わせに基づいて、データクラス生成装置１０３と、データアクセスクラス生成装置１０４と、ＳＱＬ文定義ファイル生成装置１０５とを制御し、生成された、ＳＱＬ文定義ファイル１０８と、データクラスファイル１０６と、データアクセスクラスファイル１０７とを、Ｊａｖａの前記Ｏ／Ｒマッピング上で動作させる。【選択図】図１
2011150632.tif 000002
【特許請求の範囲】
【請求項１】
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、ＳＱＬ文定義ファイル生成装置とから構成されたファイル生成システムにおいて、
前記テーブル設計書読込装置は、テーブルがあらかじめ定義されたテーブル設計書を読み込み、
前記ソース生成制御装置は、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記ＳＱＬ文定義ファイル生成装置とを制御し、
前記ＳＱＬ文定義ファイル生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーＳＱＬ文と、ＩＮＳＥＲＴ、ＵＰＤＡＴＥおよびＤＥＬＥＴＥのＳＱＬ文とが含まれたＳＱＬ文定義ファイルを生成し、
前記データクラス生成装置は、データアクセスクラス及び前記ＳＱＬ文定義ファイルで使用される、Ｏ／Ｒマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成し、
前記データアクセスクラス生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をＳＱＬ文に当てはめて、該ＳＱＬ文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成し、
前記ＳＱＬ文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Ｊａｖａの前記Ｏ／Ｒマッピング上で動作させることを特徴とするファイル生成システム。
【請求項２】
請求項１に記載のファイル生成システムにおいて、
前記テーブル設計書読込装置は、前記テーブル設計書からテーブル名とカラムの情報とを取得し、
前記ソース生成制御装置は、
前記テーブル設計書読込装置が取得した全てのカラムからカラムの組み合わせを抽出する抽出部と、
前記抽出部が抽出した組み合わせの各カラムのカラム名に基づいて、動的ファインダーメソッド名を生成するメソッド名生成部と、
前記抽出部が抽出した組み合わせの各カラムに基づいて、前記動的ファインダーＳＱＬ文を生成するＳＱＬ文生成部と、
前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記ＳＱＬ文定義ファイル生成装置とを起動する起動部とを有することを特徴とするファイル生成システム。
【請求項３】
請求項２に記載のファイル生成システムにおいて、
前記メソッド名生成部は、前記抽出部が抽出した組み合わせの各カラムのカラム名をＡＮＤで繋げたメソッド名を前記動的ファインダーメソッド名として生成することを特徴とするファイル生成システム。
【請求項４】
請求項２に記載のファイル生成システムにおいて、
前記メソッド名生成部は、前記抽出部が抽出した組み合わせの各カラムのカラム名をＯＲで繋げたメソッド名を前記動的ファインダーメソッド名として生成することを特徴とするファイル生成システム。
【請求項５】
請求項２に記載のファイル生成システムにおいて、
前記ＳＱＬ文生成部は、前記抽出部が抽出した組み合わせの各カラムをＡＮＤで繋げたＳＱＬの条件文を前記動的ファインダーＳＱＬ文として生成することを特徴とするファイル生成システム。
【請求項６】
請求項２に記載のファイル生成システムにおいて、
前記ＳＱＬ文生成部は、前記抽出部が抽出した組み合わせの各カラムをＯＲで繋げたＳＱＬの条件文を前記動的ファインダーＳＱＬ文として生成することを特徴とするファイル生成システム。
【請求項７】
請求項２に記載のファイル生成システムにおいて、
前記抽出部は、前記テーブル設計書読込装置が取得した全てのカラムから組み合わせることができるカラムの組み合わせ全てを抽出することを特徴とするファイル生成システム。
【請求項８】
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、ＳＱＬ文定義ファイル生成装置とから構成されたファイル生成システムにおけるファイル生成方法であって、
前記テーブル設計書読込装置が、テーブルがあらかじめ定義されたテーブル設計書を読み込む処理と、
前記ソース生成制御装置が、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記ＳＱＬ文定義ファイル生成装置とを制御する処理と、
前記ＳＱＬ文定義ファイル生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーＳＱＬ文と、ＩＮＳＥＲＴ、ＵＰＤＡＴＥおよびＤＥＬＥＴＥのＳＱＬ文とが含まれたＳＱＬ文定義ファイルを生成する処理と、
前記データクラス生成装置が、データアクセスクラス及び前記ＳＱＬ文定義ファイルで使用される、Ｏ／Ｒマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成する処理と、
前記データアクセスクラス生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をＳＱＬ文に当てはめて、該ＳＱＬ文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成する処理と、
前記ＳＱＬ文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Ｊａｖａの前記Ｏ／Ｒマッピング上で動作させる処理とを有するファイル生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを生成するファイル生成システムおよびファイル生成方法に関し、特にＯ／Ｒマッピング分野においてファイルを生成するファイル生成システムおよびファイル生成方法に関する。
【背景技術】
【０００２】
ｉＢＡＴＩＳのｉＢＡＴＯＲでは、基本的なＣＲＵＤ（Ｃｒｅａｔｅ、Ｒｅａｄ、Ｕｐｄａｔｅ、Ｄｅｌｅｔｅ）のＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）文を生成し、データアクセスクラスを通してそれを利用することができる機能が提供されている。この機能のＲｅａｄでは、以下の機能が提供されている。
（１）主キーを条件としてＳＥＬＥＣＴする機能
（２）値がセットされているカラムをＡＮＤで繋げた文を条件としてＳＥＬＥＣＴする機能
（１）の機能は、たいていのＯ／Ｒマッピングで提供されている機能である。一方、（２）の機能は、ｉＢＡＴＯＲの独自の機能である。
【０００３】
しかしながら、上述した（１）および（２）の機能においては、同じメソッド内で値がセットされているという前提で検索条件を構築するため、利用する側からは内部で使用される条件を推測しにくく、バグの原因を発生させてしまう。
【０００４】
また、プログラム言語の１つであるＪａｖａ（登録商標）の後発として登場したＲｕｂｙ  ｏｎ  Ｒａｉｌｓは、Ｊａｖａよりも生産性が一般的に高いと言われている。その理由の１つとして挙げられるのが、Ｒｕｂｙ  ｏｎ  ＲａｉｌｓがＡｃｔｉｖｅ  Ｒｅｃｏｒｄの動的ファインダー機能を有するという点である。
【０００５】
Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓのような動的言語では「ＭｅｔｈｏｄＭｉｓｓｉｎｇＥｘｃｅｐｔｉｏｎ」が発生した場合にある特定のメソッドを動作させ、その中でメソッド名を解析することができるメタプログラミングの機能がある。このメソッド名の解析機能により動的ファインダー機能を実現している。
【０００６】
Ｒｕｂｙ  ｏｎ  ＲａｉｌｓのＡｃｔｉｖｅ  Ｒｅｃｏｒｄでは、動的ファインダー機能が提供されているが、完全一致の検索のみにしか利用できない。さらに、ＡＮＤで繋げた条件文しか利用できない。
【０００７】
一般的にＪａｖａはＲｕｂｙ  ｏｎ  Ｒａｉｌｓよりも動作速度が速いため、エンタープライズ向けに多く用いられている。そこで、Ｊａｖａの生産性をＲｕｂｙ  ｏｎ  Ｒａｉｌｓと同等にすることができれば、エンタープライズシステム開発の生産性を向上させることができるため、情報技術の発展に貢献することができる。
【０００８】
また、ＲＤＢＭＳ（リレーショナルデータベースマネイジメントシステム）から取得された項目定義情報を解析し、その解析結果と取得した領域パラメータとから所望のＳＱＬ定義文を作成する技術が考えられている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２５９３４５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓは動的言語であるため、これを静的言語であるＪａｖａには適用できないという問題点がある。
【００１１】
Ｊａｖａで動的ファインダー機能を実現するためには、メソッドやＳＱＬ文を自動生成し、また仕様変更に応じて動的に再生成しなければならないという問題点がある。
【００１２】
また、特許文献１に記載された技術は、データアクセスクラスおよびそれに関連するデータアクセスのＳＱＬ文を生成するものではない。
【００１３】
本発明の目的は、上述した課題を解決するファイル生成システムおよびファイル生成方法を提供することである。
【課題を解決するための手段】
【００１４】
本発明のファイル生成システムは、
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、ＳＱＬ文定義ファイル生成装置とから構成されたファイル生成システムにおいて、
前記テーブル設計書読込装置は、テーブルがあらかじめ定義されたテーブル設計書を読み込み、
前記ソース生成制御装置は、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記ＳＱＬ文定義ファイル生成装置とを制御し、
前記ＳＱＬ文定義ファイル生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーＳＱＬ文と、ＩＮＳＥＲＴ、ＵＰＤＡＴＥおよびＤＥＬＥＴＥのＳＱＬ文とが含まれたＳＱＬ文定義ファイルを生成し、
前記データクラス生成装置は、データアクセスクラス及び前記ＳＱＬ文定義ファイルで使用される、Ｏ／Ｒマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成し、
前記データアクセスクラス生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をＳＱＬ文に当てはめて、該ＳＱＬ文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成し、
前記ＳＱＬ文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Ｊａｖａの前記Ｏ／Ｒマッピング上で動作させることを特徴とする。
【００１５】
また、本発明のファイル生成方法は、
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、ＳＱＬ文定義ファイル生成装置とから構成されたファイル生成システムにおけるファイル生成方法であって、
前記テーブル設計書読込装置が、テーブルがあらかじめ定義されたテーブル設計書を読み込む処理と、
前記ソース生成制御装置が、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記ＳＱＬ文定義ファイル生成装置とを制御する処理と、
前記ＳＱＬ文定義ファイル生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーＳＱＬ文と、ＩＮＳＥＲＴ、ＵＰＤＡＴＥおよびＤＥＬＥＴＥのＳＱＬ文とが含まれたＳＱＬ文定義ファイルを生成する処理と、
前記データクラス生成装置が、データアクセスクラス及び前記ＳＱＬ文定義ファイルで使用される、Ｏ／Ｒマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成する処理と、
前記データアクセスクラス生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をＳＱＬ文に当てはめて、該ＳＱＬ文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成する処理と、
前記ＳＱＬ文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Ｊａｖａの前記Ｏ／Ｒマッピング上で動作させる処理とを有する。
【発明の効果】
【００１６】
以上説明したように、本発明においては、Ｏ／Ｒマッピング分野においてＪａｖａの生産性を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明のファイル生成システムの実施の一形態を示す図である。
【図２】図１に示したテーブル設計書の一例を示す図である。
【図３】図１に示したテーブル設計書読込装置が格納した各カラムの情報の一例である。
【図４】図１に示したソース生成制御装置の内部構成の一例を示す図である。
【図５】本形態におけるファイル生成方法のうち、図４に示した抽出部における処理を説明するためのフローチャートである。
【図６】図４に示したメソッド名生成部において、各カラム名をＡＮＤで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【図７】図４に示したメソッド名生成部において、各カラム名をＯＲで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【図８】図４に示したメソッド名生成部において、「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＡＮＤで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【図９】図４に示したメソッド名生成部において、「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＯＲで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【図１０】図４に示したＳＱＬ文生成部において、各カラムをＡＮＤで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【図１１】図４に示したＳＱＬ文生成部において、各カラムをＯＲで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【図１２】図４に示したＳＱＬ文生成部において、「各カラム＋［ＬＩＫＥ／＞＝］」をＡＮＤで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【図１３】図４に示したＳＱＬ文生成部において、「各カラム＋［ＬＩＫＥ／＞＝］」をＯＲで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１９】
図１は、本発明のファイル生成システムの実施の一形態を示す図である。
【００２０】
本形態は図１に示すように、テーブル設計書読込装置１０１と、ソース生成制御装置１０２と、データクラス生成装置１０３と、データアクセスクラス生成装置１０４と、ＳＱＬ文定義ファイル生成装置１０５とから構成されている。
【００２１】
テーブル設計書読込装置１０１は、テーブルがあらかじめ定義された設計書であるテーブル設計書１００を読み込む。
【００２２】
図２は、図１に示したテーブル設計書１００の一例を示す図である。
【００２３】
図１に示したテーブル設計書１００は図２に示すように、テーブル名「Ｔ＿ＴＥＳＴ」、論理名、物理名、型、長さ、精度、必須、主キーおよび定義内容が項番（Ｎｏ）ごとにそれぞれ対応付けられたものとなっている。
【００２４】
論理名は、「ユーザＩＤ」、「ユーザ名」や「電話番号（自宅）」等である。
【００２５】
また、物理名は、論理名それぞれに対応した「ＵＳＥＲ＿ＩＤ」、「ＵＳＥＲ＿ＮＡＭＥ」や「ＴＥＬ＿ＪＩＴＡＫＵ」等である。
【００２６】
また、型は、論理名および物理名に対応した「ＮＵＭＢＥＲ」、「ＶＡＲＣＨＡＲ２」や「ＣＨＡＲ」等である。
【００２７】
また、長さ、精度、必須、主キーおよび定義内容についても、あらかじめ設定されている。
【００２８】
また、テーブル設計書読込装置１０１は、読み込んだテーブル設計書１００からテーブル名と各カラムの情報を取得する。また、テーブル設計書読込装置１０１は、取得した各カラムの情報をテーブル名と対応付けて格納（記憶）する。
【００２９】
図３は、図１に示したテーブル設計書読込装置１０１が格納した各カラムの情報の一例である。
【００３０】
図１に示したテーブル設計書読込装置１０１が格納した各カラムの情報は図３に示すように、変数名と、型と、その説明とが対応付けられて「ＥｎｔｉｔｙＭａｐｐｉｎｇＲｏｗ」として格納されている。この「説明」の部分が、設計書の各項目に相当する。これは、ＥｎｔｉｔｙＭａｐｐｉｎｇＲｏｗを基礎としてＬｉｓｔ＜ＥｎｔｉｔｙＭａｐｐｉｎｇＲｏｗ＞に格納される。
【００３１】
ソース生成制御装置１０２は、テーブル設計書１００のテーブルのカラムの組み合わせに基づいて、データクラス生成装置１０３と、データアクセスクラス生成装置１０４と、ＳＱＬ文定義ファイル生成装置１０５とを制御する。
【００３２】
図４は、図１に示したソース生成制御装置１０２の内部構成の一例を示す図である。
【００３３】
図１に示したソース生成制御装置１０２には図４に示すように、抽出部１０２１と、メソッド名生成部１０２２と、ＳＱＬ文生成部１０２３と、起動部１０２４とが設けられている。
【００３４】
抽出部１０２１は、テーブル設計書読込装置１０１が取得した全てのカラムからカラムの組み合わせを抽出する。また、抽出部１０２１は、テーブル設計書読込装置１０１が取得した全てのカラムから組み合わせることができるカラムの組み合わせ全てを抽出する。
【００３５】
メソッド名生成部１０２２は、抽出部１０２１が抽出した組み合わせの各カラムのカラム名に基づいて、動的ファインダーメソッド名を生成する。また、メソッド名生成部１０２２は、抽出部１０２１が抽出した組み合わせの各カラムのカラム名を論理積であるＡＮＤで繋げたメソッド名を動的ファインダーメソッド名として生成する。または、メソッド名生成部１０２２は、抽出部１０２１が抽出した組み合わせの各カラムのカラム名を論理和であるＯＲで繋げたメソッド名を動的ファインダーメソッド名として生成する。
【００３６】
ＳＱＬ文生成部１０２３は、抽出部１０２１が抽出した組み合わせの各カラムに基づいて、動的ファインダーＳＱＬ文を生成する。また、ＳＱＬ文生成部１０２３は、抽出部１０２１が抽出した組み合わせの各カラムを論理積であるＡＮＤで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成する。または、ＳＱＬ文生成部１０２３は、抽出部１０２１が抽出した組み合わせの各カラムを論理和であるＯＲで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成する。
【００３７】
起動部１０２４は、データクラス生成装置１０３と、データアクセスクラス生成装置１０４と、ＳＱＬ文定義ファイル生成装置１０５とを起動する。
【００３８】
ＳＱＬ文定義ファイル生成装置１０５は、カラムの組み合わせに基づいて生成された動的ファインダーＳＱＬ文と、ＩＮＳＥＲＴ、ＵＰＤＡＴＥおよびＤＥＬＥＴＥのＳＱＬ文とが含まれたＳＱＬ文定義ファイル１０８を生成する。
【００３９】
データクラス生成装置１０３は、データアクセスクラス及びＳＱＬ文定義ファイル１０８で使用される、Ｏ／Ｒマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイル１０６を生成する。
【００４０】
データアクセスクラス生成装置１０４は、カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、データクラスの値をＳＱＬ文に当てはめて、ＳＱＬ文を動作させるクラスであるデータアクセスクラスのファイルとなるデータアクセスクラスファイル１０７を生成する。
【００４１】
また、図１に示した形態で生成されたＳＱＬ文定義ファイル１０８と、データクラスファイル１０６と、データアクセスクラスファイル１０７とを、ＪａｖａのＯ／Ｒマッピング上で動作させる。
【００４２】
以下に、本形態におけるファイル生成方法のうち、図４に示した抽出部１０２１における処理について説明する。
【００４３】
図５は、本形態におけるファイル生成方法のうち、図４に示した抽出部１０２１における処理を説明するためのフローチャートである。
【００４４】
まず、全カラム数である変数ｎと、その中から抽出するカラム数である変数ｍとが初期化される（ステップＳ１）。ｍの値の取り得る範囲は、（１≦ｍ≦全カラム数）であり、ステップＳ１では「１」に初期化される。
【００４５】
その後、抽出部１０２１にて、異なるｎ個のものから異なるｍ個のものが抽出される。
【００４６】
抽出後、ｍが全カラム数以下であるかどうかが判定される（ステップＳ２）。
【００４７】
ｍが全カラム数以下ではないと判定された場合、処理は終了する。
【００４８】
一方、ｍが全カラム数以下であると判定された場合、採用した組み合わせ数が組み合わせの総数以下の数値であるかどうかが判定される（ステップＳ３）。この「採用した組み合わせ」については、後述する。
【００４９】
ここで、異なるｎ個のものから異なるｍ個のものを抽出する組み合わせの総数は、組み合わせの総数の計算式で表わされる。組み合わせの総数は、上述のように機械的に求められるが、具体的な組み合わせは機械的に求めることができない。
【００５０】
そこで、採用した組み合わせ数が組み合わせの総数以下の数値であると判定された場合、異なるｎ個のものから異なるｍ個がランダムに抽出される（ステップＳ４）。この組み合わせは、組み合わせの総数とは違い、計算式により求めることができないため、ランダムに抽出される。
【００５１】
すると、抽出したものと同じ組み合わせがすでに存在するかどうかが判定される（ステップＳ５）。
【００５２】
ステップＳ５にて、抽出したものと同じ組み合わせが存在しないと判定された場合、その組み合わせが採用される（ステップＳ６）。そして、ステップＳ３の処理が再度行われる。この採用された組み合わせが、上述した「採用した組み合わせ」となる。
【００５３】
一方、ステップＳ５にて、抽出したものと同じ組み合わせが存在すると判定された場合、その組み合わせが破棄され（ステップＳ８）、ステップＳ３の処理が再度行われる。
【００５４】
また、ステップＳ３にて、採用した組み合わせ数が組み合わせの総数以下の数値ではないと判定された場合は、ｍの値がインクリメントされ（ステップＳ７）、ステップＳ２の処理が再度行われる。
【００５５】
このように、同じ組み合わせは破棄し、これまでと異なる組み合わせは採用すると言うことを、組み合わせの総数になるまで繰り返すアルゴリズムを実装する。
【００５６】
上述したように抽出されたカラムの組み合わせに基づいて、動的ファインダーメソッド名および動的ファインダーＳＱＬ文を作成する。
【００５７】
図６は、図４に示したメソッド名生成部１０２２において、各カラム名をＡＮＤで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【００５８】
図６に示すように、６０１１のロジックにより６０１２で表わされる各カラム名をＡＮＤで繋げたメソッド名が生成される。
【００５９】
図７は、図４に示したメソッド名生成部１０２２において、各カラム名をＯＲで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【００６０】
図７に示すように、６０２１のロジックにより６０２２で表わされる各カラム名をＯＲで繋げたメソッド名が生成される。
【００６１】
図８は、図４に示したメソッド名生成部１０２２において、「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＡＮＤで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【００６２】
図８に示すように、６０３１のロジックにより６０３２で表わされる「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＡＮＤで繋げたメソッド名が生成される。数値型には「Ｇｅ」が付け加えられ、その他には「Ｌｉｋｅ」が付け加えられるようにしている。
【００６３】
図９は、図４に示したメソッド名生成部１０２２において、「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＯＲで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
【００６４】
図９に示すように、６０４１のロジックにより６０４２で表わされる「各カラム名＋［Ｌｉｋｅ／Ｇｅ］」をＯＲで繋げたメソッド名が生成される。数値型には「Ｇｅ」が付け加えられ、その他には「Ｌｉｋｅ」が付け加えられるようにしている。
【００６５】
図１０は、図４に示したＳＱＬ文生成部１０２３において、各カラムをＡＮＤで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【００６６】
図１０に示すように、７０１１のロジックにより７０１２で表わされる各カラムをＡＮＤで繋げたＳＱＬの条件文が生成される。
【００６７】
図１１は、図４に示したＳＱＬ文生成部１０２３において、各カラムをＯＲで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【００６８】
図１１に示すように、７０２１のロジックにより７０２２で表わされる各カラムをＯＲで繋げたＳＱＬの条件文が生成される。
【００６９】
図１２は、図４に示したＳＱＬ文生成部１０２３において、「各カラム＋［ＬＩＫＥ／＞＝］」をＡＮＤで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【００７０】
図１２に示すように、８０１１のロジックにより８０１２で表わされる「各カラム＋［ＬＩＫＥ／＞＝］」をＡＮＤで繋げたＳＱＬの条件文が生成される。数値型には「＞＝」が付け加えられ、その他には「ＬＩＫＥ」が付け加えられるようにしている。
【００７１】
図１３は、図４に示したＳＱＬ文生成部１０２３において、「各カラム＋［ＬＩＫＥ／＞＝］」をＯＲで繋げたＳＱＬの条件文を動的ファインダーＳＱＬ文として生成するプログラムの一例を示す図である。
【００７２】
図１３に示すように、８０２１のロジックにより８０２２で表わされる「各カラム＋［ＬＩＫＥ／＞＝］」をＯＲで繋げたＳＱＬの条件文が生成される。数値型には「＞＝」が付け加えられ、その他には「ＬＩＫＥ」が付け加えられるようにしている。
【００７３】
以上のように動的ファインダーメソッド及び動的ファインダーＳＱＬ文が生成される。生成されたデータクラス及びデータアクセスクラス、ＳＱＬ文定義ファイルは、ｉＢＡＴＩＳ  Ｏ／Ｒマッピング上で動作し、動的ファインダー機能を実現する。
【００７４】
このため、これを利用するクラス側で、アクセスするテーブルの全カラムの組み合わせの条件（ＡＮＤで繋げた条件やＯＲで繋げた条件）を使用することができるようになる。
【００７５】
本発明は、ＪａｖａのＯ／Ｒマッピングのフレームワーク上で動作が可能である。例えば、Ｓ２ＤａｏのＯ／Ｒマッピングに対しては、本発明が生成している動的ファインダーメソッド及び動的ファインダーＳＱＬ文が適合している。
【００７６】
このように本発明は、Ｏ／Ｒマッピングの分野に関し、動的ファインダーに関するＳＱＬ文を実行するシステムに関するものである。
【００７７】
以上説明したように本発明では、全カラムの組み合わせをＡＮＤで繋げた条件やＯＲで繋げた条件を生成する。また、部分一致を考慮して［ＬＩＫＥ］や［＞＝］を利用して、ＡＮＤで繋げた条件やＯＲで繋げた条件を生成する。これにより、各テーブルへの基本的なアクセスパターンがプログラム実装開始時点で利用できる。また、各テーブルの内容が変更された場合も、再生成を行なうことで、動的にその時のテーブル仕様に対応したファインダーメソッドが利用できる。そのため、データアクセスの開発工数を削減することができる。一般的にＲｕｂｙ  ｏｎ  ＲａｉｌｓはＪａｖａよりも生産性が高いと言われているが、それはＡｃｔｉｖｅＲｅｃｏｒｄの動的ファインダー機能による所が大きい。本発明ではＪａｖａでＡｃｔｉｖｅＲｅｃｏｒｄが備えている動的ファインダーと同等の機能を実現し、またその問題点を解決することで、Ｊａｖａ の生産性を向上させる効果をもたらす。
【符号の説明】
【００７８】
１００    テーブル設計書
１０１    テーブル設計書読込装置
１０２    ソース生成制御装置
１０３    データクラス生成装置
１０４    データアクセスクラス生成装置
１０５    ＳＱＬ文定義ファイル生成装置
１０６    データクラスファイル
１０７    データアクセスクラスファイル
１０８    ＳＱＬ文定義ファイル
１０２１    抽出部
１０２２    メソッド名生成部
１０２３    ＳＱＬ文生成部
１０２４    起動部
【図１】
2011150632.tif 000003
【図２】
2011150632.tif 000004
【図３】
2011150632.tif 000005
【図４】
2011150632.tif 000006
【図５】
2011150632.tif 000007
【図６】
2011150632.tif 000008
【図７】
2011150632.tif 000009
【図８】
2011150632.tif 000010
【図９】
2011150632.tif 000011
【図１０】
2011150632.tif 000012
【図１１】
2011150632.tif 000013
【図１２】
2011150632.tif 000014
【図１３】
2011150632.tif 000015