(57)【特許請求の範囲】
【請求項１】
データベースを構成しているテーブル毎に作成されたエンティティオブジェクトと、前記データベースを操作するためのＳＱＬ文を生成するＳＱＬ生成部とを備え、
前記エンティティオブジェクトは、複数のフィールドを備え、前記複数のフィールドのうち一のフィールドに、対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報を格納し、他のフィールドに操作条件を格納し、加えて、前記対応するテーブルに関連するテーブルが存在する場合は、前記一のフィールドにおいて、その型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されており、
前記ＳＱＬ生成部は、
前記エンティティオブジェクトが対応する前記テーブルを特定し、
前記操作条件に応じて、特定した前記テーブルに対する操作を実行するためのＳＱＬ文を作成し、そして、
前記エンティオブジェクトにおいて、前記一のフィールドにおいて、その型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されているかどうかを判定し、設定されている場合は、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、
ことを特徴とする、データベース操作装置。
【請求項２】
前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
前記ＳＱＬ生成部が、先ず、ＳＥＬＥＣＴ文及びＦＲＯＭを生成し、そして、
前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、含んでいる場合は、ＪＯＩＮ文を生成する、請求項１に記載のデータベース操作装置。
【請求項３】
外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる入力受付部を更に備えている、請求項１または２に記載のデータベース操作装置。
【請求項４】
前記ＳＱＬ文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、ＳＱＬ処理部を、更に備えている、請求項１〜３のいずれかに記載のデータベース操作装置。
【請求項５】
前記データベースから取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、結果変換部と、
前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、結果出力部とを、更に備えている、請求項４に記載のデータベース操作装置。
【請求項６】
（ａ）データベースを構成しているテーブル毎に作成され、且つ、一のフィールドに、対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報を格納し、他のフィールドに操作条件を格納する、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
（ｂ）前記操作条件に応じて、前記（ａ）のステップで特定された前記テーブルに対する操作を実行するためのＳＱＬ文を生成する、ステップと、
（ｃ）前記エンティティオブジェクトにおいて、前記一のフィールドにおいて、その型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されているかどうかを判定するステップと、
（ｄ）前記（ｃ）のステップで、設定されていると判定された場合に、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、ステップと、
を有することを特徴とする、データベース操作方法。
【請求項７】
前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
前記（ｂ）のステップにおいて、ＳＥＬＥＣＴ文及びＦＲＯＭを生成し、
前記（ｃ）のステップにおいて、前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、
前記（ｄ）のステップにおいて、ＪＯＩＮ文を生成する、請求項６に記載のデータベース操作方法。
【請求項８】
（ｅ）外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる、ステップを更に有する、請求項６または７に記載のデータベース操作方法。
【請求項９】
（ｆ）前記ＳＱＬ文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、ステップを、更に有する、請求項６〜８のいずれかに記載のデータベース操作方法。
【請求項１０】
（ｇ）前記（ｆ）のステップで取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、ステップと、
（ｈ）前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、ステップとを、更に有する、請求項９に記載のデータベース操作方法。
【請求項１１】
コンピュータによってデータベースの操作を実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記データベースを構成しているテーブル毎に作成され、且つ、一のフィールドに、対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報を格納し、他のフィールドに操作条件を格納する、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
（ｂ）前記操作条件に応じて、前記（ａ）のステップで特定された前記テーブルに対する操作を実行するためのＳＱＬ文を生成する、ステップと、
（ｃ）前記エンティティオブジェクトにおいて、前記一のフィールドにおいて、その型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されているかどうかを判定するステップと、
（ｄ）前記（ｃ）のステップで、設定されていると判定された場合に、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、ステップと、
を実行させることを特徴とする、プログラム。
【請求項１２】
前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
前記（ｂ）のステップにおいて、ＳＥＬＥＣＴ文及びＦＲＯＭを生成し、
前記（ｃ）のステップにおいて、前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、
前記（ｄ）のステップにおいて、ＪＯＩＮ文を生成する、請求項１１に記載のプログラム。
【請求項１３】
（ｅ）外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる、ステップを、更に前記コンピュータに実行させる、請求項１１または１２に記載のプログラム。
【請求項１４】
（ｆ）前記ＳＱＬ文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、ステップを、更に前記コンピュータに実行させる、請求項１１〜１３のいずれかに記載のプログラム。
【請求項１５】
（ｇ）前記（ｆ）のステップで取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、ステップと、
（ｈ）前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、ステップとを、更に前記コンピュータに実行させる、請求項１４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを操作するためのデータベース操作装置、データベース操作方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、データベースの殆どは、リレーショナルデータベースであり、この操作には、一般に、ＳＱＬ（Structured Query Language）と呼ばれるデータベース専用の言語が用いられている。ＳＱＬによれば、利用者側では、特にデータベースを構成している記憶装置を意識することなく、データの取り出し、書き込み、変更、削除、及び検索といった操作を実行することが可能となる。
【０００３】
また、リレーショナルデータベースでは、データは、テーブルによって管理されており、リーレーションナルデータベース内には、複数のテーブルが構築されている。そして、互いに関連するテーブルは、互いに関連付けられた状態で管理されている。更に、関連付けられた各テーブルに対してアクセスが行われる場合は、ＳＱＬによって関連テーブルの結合が行われる。
【０００４】
ところで、このようなＳＱＬを用いた操作によれば、利用者は、データベースを構成する記憶装置を意識する必要がないが、ＳＱＬを利用するために、ＳＱＬを学習し、これを理解しておく必要がある。ＳＱＬを用いたデータベースの操作は、誰もが簡単に行えるわけではない。
【０００５】
このため、例えば、特許文献１は、利用者が入力した操作条件に基づいて、ＳＱＬ文を自動的に生成するアプリケーションプログラム（以下、単に「アプリケーション」という。）を開示している。特許文献１に開示されたアプリケーションによれば、利用者は、ＳＱＬについての知識を有していなくても、データベースを操作することができる。
【０００６】
また、近年においては、ＪＡＶＡ（登録商標）アプリケーションからリレーショナルデータベースを操作する手法も提案されている。具体的には、ＳＱＬ文を発行するＪＤＢＣ（Java Data Base Connectivity）を用いた手法が知られている。また、ＪＰＡ（Java Persistence API）、Ｈｉｂｅｒｎａｔｅ等のＯ／Ｒマッピングを用いた手法も提案されている。これらの手法によっても、利用者は、ＳＱＬの知識を有することなく、データベースを操作することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１２６６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示されたアプリケーションには、単一のテーブルにアクセスする場合には対応できるが、関連する複数のテーブルにアクセスする際には対応できないという問題がある。また、特許文献１に開示されたアプリケーションでは、ＳＱＬ文を自動生成する度に、テーブル名、検索カラム情報等が登録された管理情報テーブルを作成する必要がある。よって、処理が複雑となり、アクセス性能が低下するという問題も発生する。
【０００９】
一方、ＪＡＶＡ（登録商標）アプリケーションからリレーショナルデータベースにアクセスする手法は、複数のテーブルが関連しているリレーショナルデータベースにも適用できる。しかしながら、この手法をリレーショナルデータベースに適用した場合は、パフォーマンスや可読性が低下する。即ち、この場合も、アクセス性能が低下するという問題が発生する。
【００１０】
本発明の目的は、上記問題を解消し、関連する２以上のテーブルを操作対象とした場合において、利用者側にＳＱＬの記述を求めることなく操作を実行し得、且つ、その際のアクセス性能の低下を抑制し得る、データベース操作装置、データベース操作方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明におけるデータベース操作装置は、
データベースを構成しているテーブル毎に作成されたエンティティオブジェクトと、前記データベースを操作するためのＳＱＬ文を生成するＳＱＬ生成部とを備え、
前記エンティティオブジェクトは、対応するテーブルを特定する情報及び操作条件を含み、加えて、前記対応するテーブルに関連するテーブルが存在する場合は、前記関連するテーブルを特定する情報を更に含み、
前記ＳＱＬ生成部は、前記エンティティオブジェクトが対応する前記テーブルを特定し、前記操作条件に応じて、特定した前記テーブルに対する操作を実行するためのＳＱＬ文を作成し、そして、
前記エンティオブジェクトが、前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、含んでいる場合は、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、ことを特徴とする。
【００１２】
また、上記目的を達成するため、本発明におけるデータベース操作方法は、
（ａ）データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
（ｂ）前記操作条件に応じて、前記（ａ）のステップで特定された前記テーブルに対する操作を実行するためのＳＱＬ文を生成する、ステップと、
（ｃ）前記エンティティオブジェクトが、前記（ａ）のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
（ｄ）前記（ｃ）のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、ステップと、
を有することを特徴とする。
【００１３】
更に、上記目的を達成するため、本発明におけるプログラムは、コンピュータによってデータベースの操作を実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
（ｂ）前記操作条件に応じて、前記（ａ）のステップで特定された前記テーブルに対する操作を実行するためのＳＱＬ文を生成する、ステップと、
（ｃ）前記エンティティオブジェクトが、前記（ａ）のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
（ｄ）前記（ｃ）のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのＳＱＬ文を更に生成する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１４】
以上のように、本発明におけるデータベース操作装置、データベース操作方法、及びプログラムによれば、関連する２以上のテーブルを操作対象とした場合において、利用者側にＳＱＬの記述を求めることなく操作を実行できる。更に、関連する２以上のテーブルを操作した際のアクセス性能の低下も抑制される。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の実施の形態１におけるデータベース操作装置の構成を示すブロック図である。
【図２】図２は、本発明の実施の形態１で操作対象となるテーブルの一例を示す図である。
【図３】図３は、図２に示したテーブルに対応するエンティティオブジェクトの一例を示す図である。
【図４】図４は、本発明の実施の形態１におけるデータベース操作装置の動作を示すフロー図である。
【図５】図５は、本発明の実施の形態１において作成されたＳＱＬ文の一例を示す図である。
【図６】図６は、本発明の実施の形態１におけるエンティティオブジェクト及びデータアクセスオブジェクトの定義と実装例とを示す図である。
【図７】図７は、本発明の実施の形態２におけるデータベース操作装置の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態２におけるデータベース操作装置の動作を示すフロー図である。
【発明を実施するための形態】
【００１６】
（実施の形態１）
以下、本発明の実施の形態１におけるデータベース操作装置、データベース操作方法、及びプログラムについて、図１〜図６を参照しながら説明する。最初に、本実施の形態１におけるデータベース操作装置の構成を図１に基づいて説明する。図１は、本発明の実施の形態１におけるデータベース操作装置の構成を示すブロック図である。
【００１７】
図１に示す本実施の形態１におけるデータベース操作装置１は、データベース３に対して、データの取り出し、書き込み、更新、削除、検索等の操作を実行する装置である。データベース３は、リレーショナルデータベースであり、操作が記述されたＳＱＬ文を受け取ると、それに応じて処理を実行する。また、図１に示すように、データベース３は、ｎ個のテーブル１７−１〜１７−ｎを備えている。ｎは任意の自然数である。以下において、特定のテーブルを指定していない場合は、単に「テーブル１７」とする。
【００１８】
図１に示すように、データベース操作装置１は、テーブル１７毎に作成されたエンティティオブジェクト１２−１〜１２−ｎと、データベース３を操作するためのＳＱＬ文を生成するＳＱＬ生成部１４とを備えている。また、以下において、特定のエンティティオブジェクトを指定していない場合は、単に「エンティティオブジェクト１２」とする。
【００１９】
また、図１には例示していないが、各エンティティオブジェクト１２は、対応するテーブル１７を特定する情報、及び操作条件を含んでいる。操作条件は、データベース３に対して実行される操作の条件であり、利用者によって予め指定されている。更に、各エンティティオブジェクト１２は、対応するテーブルに関連するテーブルが存在する場合は、関連するテーブルを特定する情報も含んでいる。
【００２０】
ＳＱＬ生成部１４は、先ず、エンティティオブジェクト１２が対応しているテーブル１７を特定し、更に、操作条件に応じて、特定したテーブル１７に対する操作を実行するためのＳＱＬ文を生成する。また、ＳＱＬ生成部１４は、エンティオブジェクト１２が、関連するテーブルを特定する情報を含んでいるかどうかを判定し、判定の結果、含んでいる場合は、関連するテーブルに対する操作を実行するためのＳＱＬ文も生成する。
【００２１】
このように、データベース操作装置１では、関連するテーブルの関係が予めエンティティオブジェクト１２によって特定されており、更に、このエンティティオブジェクト１２に基づいてＳＱＬ文が作成される。よって、データベース操作装置１によれば、操作対象が関連する２以上のテーブルであっても、利用者側（利用者が直接操作を行うアプリケーション側）でのＳＱＬの記述を求めることなくデータベースの操作の実行が可能となる。また、データベース操作装置１での処理は、複雑でないため、関連する２以上のテーブルを操作した際のアクセス性能の低下も抑制される。
【００２２】
ここで、本実施の形態１におけるデータベース操作装置の構成を図２及び図３を用いて更に具体的に説明する。図２は、本発明の実施の形態１で操作対象となるテーブルの一例を示す図である。図３は、図２に示したテーブルに対応するエンティティオブジェクトの一例を示す図である。
【００２３】
図１に示すように、本実施の形態１では、データベース操作装置１は、後述する本実施の形態１におけるプログラムをコンピュータ２上で実行することによって構築されている。また、データベース操作装置１は、更に、ＳＱＬ処理部１６を備えている。ＳＱＬ処理部１６は、ＳＱＬ生成部１４が生成したＳＱＬ文に記述された操作を、データベース３に対して実行し、操作の結果をデータベース３の各テーブル１７から取得する。
【００２４】
また、本実施の形態１では、上記プログラムは、ＪＡＶＡ（登録商標）アプリケーションである。このため、図１に示すように、データベース操作装置１は、データアクセスオブジェクト（ＤＡＯ：Data Access Object）１３を備えている。データアクセスオブジェクト１３は、エンティティオブジェクト１７とデータベース３との間でのデータのやり取りを実行するプログラムによって構築されている。
【００２５】
本実施の形態１においては、ＳＱＬ生成部１４及びＳＱＬ処理部１６は、データアクセスオブジェクト１３によって構築されている。データアクセスオブジェクト１３は、エンティティオブジェクト１７の内容からＳＱＬ文を自動生成し、データベース３に対して、生成したＳＱＬの処理を行い、データを取得する。
【００２６】
また、エンティティオブジェクト１２は、複数のフィールドを備えており、対応するテーブルを特定する情報、対応するテーブルに関連するテーブルを特定する情報（関連の定義）、及び操作条件を、各フィールドに格納する。
【００２７】
ここで、具体例を挙げて説明する。図２に示すように、データベース３において、テーブル１７−ｌとテーブル１７−ｍとが関連しているとする。そして、図３に示すように、テーブル１７−ｌに対応してエンティオブジェクト１２−ｌが作成されており、テーブル１７−ｍに対応してエンティティオブジェクト１２−ｍが作成されているとする。なお、ｌ及びｍは共にｎ以下の自然数である。
【００２８】
図２及び図３に示すように、テーブル１７とエンティティオブジェクト１２との対応付けは、例えば、テーブル１７のカラム（column）と、エンティティオブジェクト１２のフィールドとを対応づけることによって行うことができる。この場合、図３に示すように、エンティティオブジェクト１２の一のフィールドには、対応するテーブル１７を特定する
情報として、対応するテーブルのカラムに登録された情報が格納される。
【００２９】
また、本実施の形態では、上述したように、テーブル１７−ｌがテーブル１７−ｍに関連付けられている。そして、関連するテーブルを特定するため、例えば、テーブル１７−ｌの外部キーに対応しているエンティティオブジェクト１２−ｌのフィールドの型が、関連先のテーブル１７−ｍに対応しているエンティティオブジェクト１２−ｍのクラスに設定される。
【００３０】
つまり、図３に示すように、エンティティオブジェクト１２−ｌにおいて、テーブル１７−ｌのカラムの情報が格納されたフィールドの型Ｘは、エンティティオブジェクト１２−ｍのクラスＹに設定されている。図３の例では、フィールドの型Ｘが、関連するテーブルを特定する情報として機能している。
【００３１】
更に、図３の例では、エンティティオブジェクト１２−ｌのフィールドに、操作条件が格納されている場合は、エンティティオブジェクト１２−ｍのフィールドにも、同様の操作条件が格納される。例えば、操作条件が、テーブル１７−ｌを検索対象とする検索条件であるとする。テーブル１７−ｌはテーブル１７−ｍと関連しているため、検索は、テーブル１７−ｌとテーブル１７−ｍとにまたがって行う必要がある。よって、エンティティオブジェクト１２−ｌのフィールドと、エンティティオブジェクト１２−ｍのフィールドとに、操作条件として、同一の検索条件が格納される。
【００３２】
また、操作条件が、上述したテーブル１７−ｌ及び１７−ｍを検索対象とする検索条件である場合は、ＳＱＬ生成部１４は、先ず、ＳＥＬＥＣＴ文及びＦＲＯＭを生成する。そして、ＳＱＬ生成部１４は、エンティティオブジェクト１２−ｌのフィールドを走査して、エンティオブジェクト１２−ｌが関連するテーブル１７−ｍを特定する情報を含んでいるかどうかを判定する。
【００３３】
具体的には、ＳＱＬ生成部１４は、エンティオブジェクト１２−ｌのいずれかのフィールドの型が、別のエンティティオブジェクト１２−ｍのクラスに設定されているかどうかを判定する。そして、図３の例では、エンティオブジェクト１２−ｌのフィールドの型Ｘがエンティティオブジェクト１２−ｍのクラスＹに設定されているので、ＳＱＬ生成部１４は、ＪＯＩＮ文を生成する。その後、ＳＱＬ生成部１４は、エンティティオブジェクト１２−ｍに基づいて、更に、ＳＱＬ文を生成する。
【００３４】
次に、本発明の実施の形態１におけるデータベース操作装置１の動作について図４を用いて説明する。図４は、本発明の実施の形態１におけるデータベース操作装置の動作を示すフロー図である。また、本実施の形態１では、データベース操作装置１を動作させることによって、データベース操作方法が実施される。よって、本実施の形態１におけるデータベース操作方法の説明は、以下のデータベース操作装置１の動作の説明に代える。なお、適宜図１〜図３を参酌する。
【００３５】
また、図４の例は、コンピュータ２（図１参照）が、情報の検索を行う業務システムを構成している場合を示しており、エンティティオブジェクト１２のフィールドに格納される操作条件は、検索条件である。更に、各エンティティオブジェクト１２は、テーブル１７に合わせて予め作成されている。また、利用者は、コンピュータ２を介して、予め、検索条件を指定し、指定した検索条件を、指定したエンティオブジェクト１２のフィールドに格納させている。
【００３６】
図４に示すように、先ず、ＳＱＬ生成部１４は、ＳＥＬＥＣＴ文を作成し、予め指定されたエンティオブジェクト１２の検索条件を読み出し、そして、対応するテーブル１７に
登録されているデータのうち取得すべきデータを特定する（ステップＡ１）。
【００３７】
次に、ＳＱＬ生成部１４は、予め指定されたエンティティオブジェクトから、それが対応しているテーブルを特定する（ステップＡ２）。そして、ＳＱＬ生成部１４は、ステップＡ２で特定されたテーブルに基づき、ＦＲＯＭ文を生成する(ステップＡ３)。その後、ＳＱＬ生成部１４は、予め指定されたエンティティオブジェクト内のフィールドの走査を実行する（ステップＡ４）。
【００３８】
次に、ＳＱＬ生成部１４は、走査中のフィールドの内容が空であるかどうか、即ち、当該フィールドにデータが格納されているかどうかを判定する（ステップＡ５）。判定の結果、空である場合は、再度、ステップＳ４を実行する。これにより、次の別のフィールドの走査が実行される。一方、判定の結果、空でない場合は、ＳＱＬ生成部１４は、ステップＡ６を実行する。
【００３９】
ステップＡ６では、ＳＱＬ生成部１４は、走査中のフィールドの型が、他のエンティティオブジェク１２のクラスに設定されているかどうかを判定する。ステップＡ６の判定の結果、走査中のフィールドの型が、他のエンティティオブジェク１２のクラスに設定されている場合は、ＳＱＬ生成部１４は、他のエンティティオブジェクト１２に対して、ステップＡ２〜Ａ６を再帰的に実行する。但し、この場合のステップＡ３では、ＳＱＬ生成部１４は、ＦＲＯＭ文を生成する代わりに、ＪＯＩＮ文を生成し、これを既に生成しているＳＱＬ文に追加する。
【００４０】
一方、ステップＡ６の判定の結果、走査中のフィールドの型が、他のエンティティオブジェク１２のクラスに設定されていない場合は、ＳＱＬ生成部１４は、走査中のフィールドに格納されているデータに基づいて、ＷＨＥＲＥ文を生成する（ステップＡ７）。また、ステップＡ７では、ＳＱＬ生成部４は、ステップＡ２〜Ａ６が再帰的に実行され、ＪＯＩＮ文によってＳＱＬ文が結合されている場合は、ＯＮ文を生成する。
【００４１】
次に、ＳＱＬ生成部１４は、指定されたエンティティオブジェクト１２（又はステップＡ６で判定された他のエンティティオブジェクト１２）の全てのフィールドを走査したかどうか判定する（ステップＡ８）。
【００４２】
ステップＡ８での判定の結果、エンティティオブジェクト１２の全てのフィールドを走査していない場合は、ＳＱＬ生成部１４は、当該エンティティオブジェクト１２の次のフィールドを走査するため、再度、ステップＳ４を実行する。一方、ステップＡ８の判定の結果、エンティティオブジェクト１２の全てのフィールドを走査している場合は、ＳＱＬ生成部１４における処理は終了する。
【００４３】
その後、ＳＱＬ処理部１６は、生成されたＳＱＬ文をデータベース３に渡し（ステップＡ９）、そして、データベース３から操作の結果を受け取る（ステップＡ１０）。ステップＡ１０が実行されると、データベース操作装置１での処理は終了する。
【００４４】
また、指定されたエンティティオブジェクト１２が図３に示す例であり、対応しているテーブルが図２に示す例であった場合、ＳＱＬ文の具体例は図５に示す通りとなる。図５は、本発明の実施の形態１において作成されたＳＱＬ文の一例を示す図である。図５に示すように、ＳＱＬ文には、ＳＥＬＥＣＴ文、ＦＲＯＭ文、ＪＯＩＮ文、ＯＮ文が含まれている。
【００４５】
更に、上記の場合において、エンティティオブジェクト１２及びデータアクセスオブジェクト１３における、定義と検索時の実装例とは、図６に示す通りとなる。図６は、本発
明の実施の形態１におけるエンティティオブジェクト及びデータアクセスオブジェクトの定義と実装例とを示す図である。なお、図６において、定義と検索時の実装例とは、Ｊａｖａのソースコードをベースにして作成されている。
【００４６】
以上のように、本実施の形態１によれば、上述したように、操作対象が関連する２以上のテーブル１７であったとしても、利用者側（利用者が直接操作を行うアプリケーション側）でのＳＱＬの記述が求められることはない。この結果、利用者は、直接ＳＱＬ文を作成しなくても、例えば、複数のテーブルにまたがる検索を実行できる。また、データベース操作装置１では、複数のテーブルにまたがる検索の実行時において、複雑な処理は要求されないため、関連する２以上のテーブルを操作した際のアクセス性能の低下は抑制される。
【００４７】
本実施の形態１におけるプログラムは、コンピュータ２（図１参照）に、図４に示すステップＡ１〜Ａ１０を実行させるプログラムであれば良い。このプログラムをコンピュータ２にインストールし、実行することによって、本実施の形態１におけるデータベース操作装置１とデータベース操作方法とを実現することができる。この場合、コンピュータ２のＣＰＵ（Central Processing Unit）は、データアクセスオブジェクト１３として機能し、処理を行なう。また、コンピュータ２のＣＰＵは、メモリやハードディスク等の記憶装置の記憶領域に、エンティティオブジェクト１２を構築する。
【００４８】
（実施の形態２）
次に、本発明の実施の形態２におけるデータベース操作装置、データベース操作方法、及びプログラムについて、図７及び図８を参照しながら説明する。最初に、本実施の形態２におけるデータベース操作装置の構成を図７に基づいて説明する。図７は、本発明の実施の形態２におけるデータベース操作装置の構成を示すブロック図である。
【００４９】
図７に示すように、本実施の形態２におけるデータベース操作装置４は、図１に示した実施の形態１におけるデータベース操作装置１の構成に加えて、更に、入力受付部１０、結果出力部１１、及び結果変換部１５を備えている。なお、これらを備えている以外は、データベース操作装置４は、実施の形態１におけるデータベース操作装置１と同様に構成されている。以下、相違点について説明する。
【００５０】
入力受付部１０は、外部から利用者によって入力された操作条件を受け付ける。更に、入力受付部１０は、受け付けた操作条件に対応するエンティティオブジェクト１２を特定し、特定したエンティティオブジェクト１２に、受け付けた操作条件を格納させる。
【００５１】
また、本実施の形態２では、入力受付部１０は、コンピュータ２に接続された表示装置６に、操作条件の入力画面を表示させることができる。例えば、操作条件が検索条件である場合は、入力画面には、ＡＮＤ又はＯＲでつながれる複数のフィールドが表示される。利用者は、入力画面上で、キーボードやマウスといった入力装置を用いて、各フィールドにキーワードを入力することによって、検索条件を設定することができる。
【００５２】
結果変換部１５は、ＳＱＬ処理部１６によってデータベース３から取得された操作の結果を、エンティティオブジェクト１２で登録可能なデータ形式に変換する。更に、結果変換部１５は、変換した結果を、取得元のテーブル１７に対応しているエンティティオブジェクト１２に登録する。
【００５３】
結果出力部１１は、結果変換部１５によって変換された結果が登録されたエンティティオブジェクト１２から、登録された結果を取り出し、取り出した結果を外部に出力する。本実施の形態２では、結果出力部１１は、表示装置６に、結果を示す結果画面を表示させ
ることができる。この場合、利用者は、結果を容易に把握することができる。
【００５４】
次に、本発明の実施の形態２におけるデータベース操作装置４の動作について図８を用いて説明する。図８は、本発明の実施の形態２におけるデータベース操作装置の動作を示すフロー図である。また、本実施の形態２においても、データベース操作装置４を動作させることによって、データベース操作方法が実施される。よって、本実施の形態におけるデータベース操作方法の説明は、以下のデータベース操作装置４の動作の説明に代える。なお、適宜図７を参酌する。
【００５５】
また、図８の例も、実施の形態１において図４に示した例と同様に、コンピュータ２（図１参照）が、情報の検索を行う業務システムを構成している場合を示している。図８の例において、エンティティオブジェクト１２のフィールドに格納される操作条件は、検索条件である。なお、各エンティティオブジェクト１２は、テーブル１７に合わせて予め作成されているが、操作条件は設定されていない状態にある。
【００５６】
図８に示すように、先ず、入力受付部１０は、入力画面上で入力された検索条件を取得し、これを受け付ける（ステップＢ１）。次に、入力受付部１０は、受け付けた検索条件に対応するエンティティオブジェクト１２を特定し、特定したエンティティオブジェクト１２のフィールドに検索条件を格納させる（ステップＢ２）。
【００５７】
次に、ＳＱＬ生成部１４は、エンティティオブジェクト１２に基づいてＳＱＬ文を生成する（ステップＢ３）。本実施の形態２において、ステップＢ３は、実施の形態１において図４に示したステップＡ１〜Ａ８を全て含んでいる。ステップＢ３で生成されたＳＱＬ文は、ＳＱＬ処理部１６に入力される。
【００５８】
次に、ＳＱＬ処理部１６は、生成されたＳＱＬ文をデータベース３に渡し（ステップＢ４）、そして、データベース３から検索の結果を受け取る（ステップＢ５）。続いて、結果変換部１５は、ステップＢ５で取得された検索の結果を、エンティティオブジェクト１２で登録可能なデータ形式に変換し、変換した結果を、取得元のテーブル１７に対応しているエンティティオブジェクト１２に登録する（ステップＢ６）。
【００５９】
その後、結果出力部１１は、ステップＢ６で検索の結果が登録されたエンティティオブジェクト１２から、登録された検索の結果を取り出し、取り出した検索の結果を表示装置６に出力する（ステップＢ７）。これにより、検索の結果が、表示装置６の表示画面に表示され、利用者は、検索の結果を容易に把握することができる。ステップＢ７が実行されると、データベース操作装置４での処理は終了する。
【００６０】
以上のように、本実施の形態２によれば、利用者は、入力画面上で、直接、検索条件を入力することができる。また、入力された検索条件がエンティティオブジェクト１２に設定されるので、本実施の形態２を用いた場合も、実施の形態１を用いた場合と同様に、利用者側でＳＱＬを記述することなく、複数のテーブルにまたがる検索の実行が可能となる。更に、データベース操作装置４においても、複数のテーブルにまたがる検索の実行時において、複雑な処理は要求されず、アクセス性能の低下は抑制される。
【００６１】
また、本実施の形態２におけるプログラムは、コンピュータ２（図１参照）に、図８に示すステップＢ１〜Ａ７を実行させるプログラムであれば良い。このプログラムをコンピュータ２にインストールし、実行することによって、本実施の形態２におけるデータベース操作装置４とデータベース操作方法とを実現することができる。この場合、コンピュータ２のＣＰＵ（Central Processing Unit）は、データアクセスオブジェクト１３として機能し、処理を行なう。また、コンピュータ２のＣＰＵは、メモリやハードディスク等の
記憶装置の記憶領域に、エンティティオブジェクト１２を構築する。
【００６２】
以上説明した実施の形態１及び２では、ＳＱＬ生成部１４が最初にＳＥＬＥＣＴ文を生成する例が、挙げられている（図４参照）。但し、本発明は、この例に限定されるものではない。本発明では、ＳＱＬ生成部は、エンティティオブジェクトに設定されている操作条件に基づいて、ＵＰＤＡＴＥ文や、ＤＥＬＥＴＥ文を生成することもできる。この場合、データベースに対しては、更新処理や、削除処理が行われる。
【産業上の利用可能性】
【００６３】
本発明によれば、互いに関連するテーブルが存在している場合であっても、利用者側でＳＱＬ文を記述することなく、データベースを操作できる。本発明は、リレーショナルデータベースを利用した業務システム、特には、アプリケーションプログラムによってＳＱＬが作成され、このＳＱＬによってデータベースが操作されるシステムに有用である。
【符号の説明】
【００６４】
１  データベース操作装置（実施の形態１）
２  コンピュータ
３  データベース
４  データベース操作装置（実施の形態２）
５  入力装置
６  表示装置
１０  入力受付部
１１  結果出力部
１２−１〜１２−ｎ  エンティティオブジェクト
１３  データアクセスオブジェクト
１４  ＳＱＬ生成部
１５  結果変換部
１６  ＳＱＬ処理部
１７−１〜１７−ｎ  テーブル
【図１】
0005488792.tif 000002
【図２】
0005488792.tif 000003
【図３】
0005488792.tif 000004
【図４】
0005488792.tif 000005
【図５】
0005488792.tif 000006
【図６】
0005488792.tif 000007
【図７】
0005488792.tif 000008
【図８】
0005488792.tif 000009