JP2011059845A - データベース操作装置、データベース操作方法、及びプログラム - Google Patents

データベース操作装置、データベース操作方法、及びプログラム Download PDF

Info

Publication number
JP2011059845A
JP2011059845A JP2009206742A JP2009206742A JP2011059845A JP 2011059845 A JP2011059845 A JP 2011059845A JP 2009206742 A JP2009206742 A JP 2009206742A JP 2009206742 A JP2009206742 A JP 2009206742A JP 2011059845 A JP2011059845 A JP 2011059845A
Authority
JP
Japan
Prior art keywords
entity object
database
result
sql
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009206742A
Other languages
English (en)
Other versions
JP5488792B2 (ja
Inventor
Hiroyuki Sano
宏行 佐野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009206742A priority Critical patent/JP5488792B2/ja
Publication of JP2011059845A publication Critical patent/JP2011059845A/ja
Application granted granted Critical
Publication of JP5488792B2 publication Critical patent/JP5488792B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】関連する2以上のテーブルを操作対象とした場合において、利用者側にSQLの記述を求めることなく操作を実行し得、且つ、その際のアクセス性能の低下を抑制し得る、データベース操作装置、データベース操作方法、及びプログラムを提供する。
【解決手段】データベース操作装置1は、テーブル17毎に作成されたエンティティオブジェクト12と、SQL文を生成するSQL生成部14とを備える。エンティティオブジェクト12は、テーブルを特定する情報、操作条件、関連するテーブルを特定する情報を含む。SQL生成部14は、操作条件に応じて、テーブル17に対する操作を実行するためのSQL文を作成し、そして、エンティオブジェクト12が、関連するテーブル17を特定する情報を含んでいる場合に、関連するテーブル17に対する操作を実行するためのSQL文を更に生成する。
【選択図】図1

Description

本発明は、データベースを操作するためのデータベース操作装置、データベース操作方法、及びプログラムに関する。
近年、データベースの殆どは、リレーショナルデータベースであり、この操作には、一般に、SQL(Structured Query Language)と呼ばれるデータベース専用の言語が用いられている。SQLによれば、利用者側では、特にデータベースを構成している記憶装置を意識することなく、データの取り出し、書き込み、変更、削除、及び検索といった操作を実行することが可能となる。
また、リレーショナルデータベースでは、データは、テーブルによって管理されており、リーレーションナルデータベース内には、複数のテーブルが構築されている。そして、互いに関連するテーブルは、互いに関連付けられた状態で管理されている。更に、関連付けられた各テーブルに対してアクセスが行われる場合は、SQLによって関連テーブルの結合が行われる。
ところで、このようなSQLを用いた操作によれば、利用者は、データベースを構成する記憶装置を意識する必要がないが、SQLを利用するために、SQLを学習し、これを理解しておく必要がある。SQLを用いたデータベースの操作は、誰もが簡単に行えるわけではない。
このため、例えば、特許文献1は、利用者が入力した操作条件に基づいて、SQL文を自動的に生成するアプリケーションプログラム(以下、単に「アプリケーション」という。)を開示している。特許文献1に開示されたアプリケーションによれば、利用者は、SQLについての知識を有していなくても、データベースを操作することができる。
また、近年においては、JAVA(登録商標)アプリケーションからリレーショナルデータベースを操作する手法も提案されている。具体的には、SQL文を発行するJDBC(Java Data Base Connectivity)を用いた手法が知られている。また、JPA(Java Persistence API)、Hibernate等のO/Rマッピングを用いた手法も提案されている。これらの手法によっても、利用者は、SQLの知識を有することなく、データベースを操作することができる。
特開2004−126680号公報
しかしながら、特許文献1に開示されたアプリケーションには、単一のテーブルにアクセスする場合には対応できるが、関連する複数のテーブルにアクセスする際には対応できないという問題がある。また、特許文献1に開示されたアプリケーションでは、SQL文を自動生成する度に、テーブル名、検索カラム情報等が登録された管理情報テーブルを作成する必要がある。よって、処理が複雑となり、アクセス性能が低下するという問題も発生する。
一方、JAVA(登録商標)アプリケーションからリレーショナルデータベースにアクセスする手法は、複数のテーブルが関連しているリレーショナルデータベースにも適用できる。しかしながら、この手法をリレーショナルデータベースに適用した場合は、パフォーマンスや可読性が低下する。即ち、この場合も、アクセス性能が低下するという問題が発生する。
本発明の目的は、上記問題を解消し、関連する2以上のテーブルを操作対象とした場合において、利用者側にSQLの記述を求めることなく操作を実行し得、且つ、その際のアクセス性能の低下を抑制し得る、データベース操作装置、データベース操作方法、及びプログラムを提供することにある。
上記目的を達成するため、本発明におけるデータベース操作装置は、
データベースを構成しているテーブル毎に作成されたエンティティオブジェクトと、前記データベースを操作するためのSQL文を生成するSQL生成部とを備え、
前記エンティティオブジェクトは、対応するテーブルを特定する情報及び操作条件を含み、加えて、前記対応するテーブルに関連するテーブルが存在する場合は、前記関連するテーブルを特定する情報を更に含み、
前記SQL生成部は、前記エンティティオブジェクトが対応する前記テーブルを特定し、前記操作条件に応じて、特定した前記テーブルに対する操作を実行するためのSQL文を作成し、そして、
前記エンティオブジェクトが、前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、含んでいる場合は、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、ことを特徴とする。
また、上記目的を達成するため、本発明におけるデータベース操作方法は、
(a)データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
(b)前記操作条件に応じて、前記(a)のステップで特定された前記テーブルに対する操作を実行するためのSQL文を生成する、ステップと、
(c)前記エンティティオブジェクトが、前記(a)のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
(d)前記(c)のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、ステップと、
を有することを特徴とする。
更に、上記目的を達成するため、本発明におけるプログラムは、コンピュータによってデータベースの操作を実行させるためのプログラムであって、
前記コンピュータに、
(a)前記データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
(b)前記操作条件に応じて、前記(a)のステップで特定された前記テーブルに対する操作を実行するためのSQL文を生成する、ステップと、
(c)前記エンティティオブジェクトが、前記(a)のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
(d)前記(c)のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、ステップと、
を実行させることを特徴とする。
以上のように、本発明におけるデータベース操作装置、データベース操作方法、及びプログラムによれば、関連する2以上のテーブルを操作対象とした場合において、利用者側にSQLの記述を求めることなく操作を実行できる。更に、関連する2以上のテーブルを操作した際のアクセス性能の低下も抑制される。
図1は、本発明の実施の形態1におけるデータベース操作装置の構成を示すブロック図である。 図2は、本発明の実施の形態1で操作対象となるテーブルの一例を示す図である。 図3は、図2に示したテーブルに対応するエンティティオブジェクトの一例を示す図である。 図4は、本発明の実施の形態1におけるデータベース操作装置の動作を示すフロー図である。 図5は、本発明の実施の形態1において作成されたSQL文の一例を示す図である。 図6は、本発明の実施の形態1におけるエンティティオブジェクト及びデータアクセスオブジェクトの定義と実装例とを示す図である。 図7は、本発明の実施の形態2におけるデータベース操作装置の構成を示すブロック図である。 図8は、本発明の実施の形態2におけるデータベース操作装置の動作を示すフロー図である。
(実施の形態1)
以下、本発明の実施の形態1におけるデータベース操作装置、データベース操作方法、及びプログラムについて、図1〜図6を参照しながら説明する。最初に、本実施の形態1におけるデータベース操作装置の構成を図1に基づいて説明する。図1は、本発明の実施の形態1におけるデータベース操作装置の構成を示すブロック図である。
図1に示す本実施の形態1におけるデータベース操作装置1は、データベース3に対して、データの取り出し、書き込み、更新、削除、検索等の操作を実行する装置である。データベース3は、リレーショナルデータベースであり、操作が記述されたSQL文を受け取ると、それに応じて処理を実行する。また、図1に示すように、データベース3は、n個のテーブル17−1〜17−nを備えている。nは任意の自然数である。以下において、特定のテーブルを指定していない場合は、単に「テーブル17」とする。
図1に示すように、データベース操作装置1は、テーブル17毎に作成されたエンティティオブジェクト12−1〜12−nと、データベース3を操作するためのSQL文を生成するSQL生成部14とを備えている。また、以下において、特定のエンティティオブジェクトを指定していない場合は、単に「エンティティオブジェクト12」とする。
また、図1には例示していないが、各エンティティオブジェクト12は、対応するテーブル17を特定する情報、及び操作条件を含んでいる。操作条件は、データベース3に対して実行される操作の条件であり、利用者によって予め指定されている。更に、各エンティティオブジェクト12は、対応するテーブルに関連するテーブルが存在する場合は、関連するテーブルを特定する情報も含んでいる。
SQL生成部14は、先ず、エンティティオブジェクト12が対応しているテーブル17を特定し、更に、操作条件に応じて、特定したテーブル17に対する操作を実行するためのSQL文を生成する。また、SQL生成部14は、エンティオブジェクト12が、関連するテーブルを特定する情報を含んでいるかどうかを判定し、判定の結果、含んでいる場合は、関連するテーブルに対する操作を実行するためのSQL文も生成する。
このように、データベース操作装置1では、関連するテーブルの関係が予めエンティティオブジェクト12によって特定されており、更に、このエンティティオブジェクト12に基づいてSQL文が作成される。よって、データベース操作装置1によれば、操作対象が関連する2以上のテーブルであっても、利用者側(利用者が直接操作を行うアプリケーション側)でのSQLの記述を求めることなくデータベースの操作の実行が可能となる。また、データベース操作装置1での処理は、複雑でないため、関連する2以上のテーブルを操作した際のアクセス性能の低下も抑制される。
ここで、本実施の形態1におけるデータベース操作装置の構成を図2及び図3を用いて更に具体的に説明する。図2は、本発明の実施の形態1で操作対象となるテーブルの一例を示す図である。図3は、図2に示したテーブルに対応するエンティティオブジェクトの一例を示す図である。
図1に示すように、本実施の形態1では、データベース操作装置1は、後述する本実施の形態1におけるプログラムをコンピュータ2上で実行することによって構築されている。また、データベース操作装置1は、更に、SQL処理部16を備えている。SQL処理部16は、SQL生成部14が生成したSQL文に記述された操作を、データベース3に対して実行し、操作の結果をデータベース3の各テーブル17から取得する。
また、本実施の形態1では、上記プログラムは、JAVA(登録商標)アプリケーションである。このため、図1に示すように、データベース操作装置1は、データアクセスオブジェクト(DAO:Data Access Object)13を備えている。データアクセスオブジェクト13は、エンティティオブジェクト17とデータベース3との間でのデータのやり取りを実行するプログラムによって構築されている。
本実施の形態1においては、SQL生成部14及びSQL処理部16は、データアクセスオブジェクト13によって構築されている。データアクセスオブジェクト13は、エンティティオブジェクト17の内容からSQL文を自動生成し、データベース3に対して、生成したSQLの処理を行い、データを取得する。
また、エンティティオブジェクト12は、複数のフィールドを備えており、対応するテーブルを特定する情報、対応するテーブルに関連するテーブルを特定する情報(関連の定義)、及び操作条件を、各フィールドに格納する。
ここで、具体例を挙げて説明する。図2に示すように、データベース3において、テーブル17−lとテーブル17−mとが関連しているとする。そして、図3に示すように、テーブル17−lに対応してエンティオブジェクト12−lが作成されており、テーブル17−mに対応してエンティティオブジェクト12−mが作成されているとする。なお、l及びmは共にn以下の自然数である。
図2及び図3に示すように、テーブル17とエンティティオブジェクト12との対応付けは、例えば、テーブル17のカラム(column)と、エンティティオブジェクト12のフィールドとを対応づけることによって行うことができる。この場合、図3に示すように、エンティティオブジェクト12の一のフィールドには、対応するテーブル17を特定する
情報として、対応するテーブルのカラムに登録された情報が格納される。
また、本実施の形態では、上述したように、テーブル17−lがテーブル17−mに関連付けられている。そして、関連するテーブルを特定するため、例えば、テーブル17−lの外部キーに対応しているエンティティオブジェクト12−lのフィールドの型が、関連先のテーブル17−mに対応しているエンティティオブジェクト12−mのクラスに設定される。
つまり、図3に示すように、エンティティオブジェクト12−lにおいて、テーブル17−lのカラムの情報が格納されたフィールドの型Xは、エンティティオブジェクト12−mのクラスYに設定されている。図3の例では、フィールドの型Xが、関連するテーブルを特定する情報として機能している。
更に、図3の例では、エンティティオブジェクト12−lのフィールドに、操作条件が格納されている場合は、エンティティオブジェクト12−mのフィールドにも、同様の操作条件が格納される。例えば、操作条件が、テーブル17−lを検索対象とする検索条件であるとする。テーブル17−lはテーブル17−mと関連しているため、検索は、テーブル17−lとテーブル17−mとにまたがって行う必要がある。よって、エンティティオブジェクト12−lのフィールドと、エンティティオブジェクト12−mのフィールドとに、操作条件として、同一の検索条件が格納される。
また、操作条件が、上述したテーブル17−l及び17−mを検索対象とする検索条件である場合は、SQL生成部14は、先ず、SELECT文及びFROMを生成する。そして、SQL生成部14は、エンティティオブジェクト12−lのフィールドを走査して、エンティオブジェクト12−lが関連するテーブル17−mを特定する情報を含んでいるかどうかを判定する。
具体的には、SQL生成部14は、エンティオブジェクト12−lのいずれかのフィールドの型が、別のエンティティオブジェクト12−mのクラスに設定されているかどうかを判定する。そして、図3の例では、エンティオブジェクト12−lのフィールドの型Xがエンティティオブジェクト12−mのクラスYに設定されているので、SQL生成部14は、JOIN文を生成する。その後、SQL生成部14は、エンティティオブジェクト12−mに基づいて、更に、SQL文を生成する。
次に、本発明の実施の形態1におけるデータベース操作装置1の動作について図4を用いて説明する。図4は、本発明の実施の形態1におけるデータベース操作装置の動作を示すフロー図である。また、本実施の形態1では、データベース操作装置1を動作させることによって、データベース操作方法が実施される。よって、本実施の形態1におけるデータベース操作方法の説明は、以下のデータベース操作装置1の動作の説明に代える。なお、適宜図1〜図3を参酌する。
また、図4の例は、コンピュータ2(図1参照)が、情報の検索を行う業務システムを構成している場合を示しており、エンティティオブジェクト12のフィールドに格納される操作条件は、検索条件である。更に、各エンティティオブジェクト12は、テーブル17に合わせて予め作成されている。また、利用者は、コンピュータ2を介して、予め、検索条件を指定し、指定した検索条件を、指定したエンティオブジェクト12のフィールドに格納させている。
図4に示すように、先ず、SQL生成部14は、SELECT文を作成し、予め指定されたエンティオブジェクト12の検索条件を読み出し、そして、対応するテーブル17に
登録されているデータのうち取得すべきデータを特定する(ステップA1)。
次に、SQL生成部14は、予め指定されたエンティティオブジェクトから、それが対応しているテーブルを特定する(ステップA2)。そして、SQL生成部14は、ステップA2で特定されたテーブルに基づき、FROM文を生成する(ステップA3)。その後、SQL生成部14は、予め指定されたエンティティオブジェクト内のフィールドの走査を実行する(ステップA4)。
次に、SQL生成部14は、走査中のフィールドの内容が空であるかどうか、即ち、当該フィールドにデータが格納されているかどうかを判定する(ステップA5)。判定の結果、空である場合は、再度、ステップS4を実行する。これにより、次の別のフィールドの走査が実行される。一方、判定の結果、空でない場合は、SQL生成部14は、ステップA6を実行する。
ステップA6では、SQL生成部14は、走査中のフィールドの型が、他のエンティティオブジェク12のクラスに設定されているかどうかを判定する。ステップA6の判定の結果、走査中のフィールドの型が、他のエンティティオブジェク12のクラスに設定されている場合は、SQL生成部14は、他のエンティティオブジェクト12に対して、ステップA2〜A6を再帰的に実行する。但し、この場合のステップA3では、SQL生成部14は、FROM文を生成する代わりに、JOIN文を生成し、これを既に生成しているSQL文に追加する。
一方、ステップA6の判定の結果、走査中のフィールドの型が、他のエンティティオブジェク12のクラスに設定されていない場合は、SQL生成部14は、走査中のフィールドに格納されているデータに基づいて、WHERE文を生成する(ステップA7)。また、ステップA7では、SQL生成部4は、ステップA2〜A6が再帰的に実行され、JOIN文によってSQL文が結合されている場合は、ON文を生成する。
次に、SQL生成部14は、指定されたエンティティオブジェクト12(又はステップA6で判定された他のエンティティオブジェクト12)の全てのフィールドを走査したかどうか判定する(ステップA8)。
ステップA8での判定の結果、エンティティオブジェクト12の全てのフィールドを走査していない場合は、SQL生成部14は、当該エンティティオブジェクト12の次のフィールドを走査するため、再度、ステップS4を実行する。一方、ステップA8の判定の結果、エンティティオブジェクト12の全てのフィールドを走査している場合は、SQL生成部14における処理は終了する。
その後、SQL処理部16は、生成されたSQL文をデータベース3に渡し(ステップA9)、そして、データベース3から操作の結果を受け取る(ステップA10)。ステップA10が実行されると、データベース操作装置1での処理は終了する。
また、指定されたエンティティオブジェクト12が図3に示す例であり、対応しているテーブルが図2に示す例であった場合、SQL文の具体例は図5に示す通りとなる。図5は、本発明の実施の形態1において作成されたSQL文の一例を示す図である。図5に示すように、SQL文には、SELECT文、FROM文、JOIN文、ON文が含まれている。
更に、上記の場合において、エンティティオブジェクト12及びデータアクセスオブジェクト13における、定義と検索時の実装例とは、図6に示す通りとなる。図6は、本発
明の実施の形態1におけるエンティティオブジェクト及びデータアクセスオブジェクトの定義と実装例とを示す図である。なお、図6において、定義と検索時の実装例とは、Javaのソースコードをベースにして作成されている。
以上のように、本実施の形態1によれば、上述したように、操作対象が関連する2以上のテーブル17であったとしても、利用者側(利用者が直接操作を行うアプリケーション側)でのSQLの記述が求められることはない。この結果、利用者は、直接SQL文を作成しなくても、例えば、複数のテーブルにまたがる検索を実行できる。また、データベース操作装置1では、複数のテーブルにまたがる検索の実行時において、複雑な処理は要求されないため、関連する2以上のテーブルを操作した際のアクセス性能の低下は抑制される。
本実施の形態1におけるプログラムは、コンピュータ2(図1参照)に、図4に示すステップA1〜A10を実行させるプログラムであれば良い。このプログラムをコンピュータ2にインストールし、実行することによって、本実施の形態1におけるデータベース操作装置1とデータベース操作方法とを実現することができる。この場合、コンピュータ2のCPU(Central Processing Unit)は、データアクセスオブジェクト13として機能し、処理を行なう。また、コンピュータ2のCPUは、メモリやハードディスク等の記憶装置の記憶領域に、エンティティオブジェクト12を構築する。
(実施の形態2)
次に、本発明の実施の形態2におけるデータベース操作装置、データベース操作方法、及びプログラムについて、図7及び図8を参照しながら説明する。最初に、本実施の形態2におけるデータベース操作装置の構成を図7に基づいて説明する。図7は、本発明の実施の形態2におけるデータベース操作装置の構成を示すブロック図である。
図7に示すように、本実施の形態2におけるデータベース操作装置4は、図1に示した実施の形態1におけるデータベース操作装置1の構成に加えて、更に、入力受付部10、結果出力部11、及び結果変換部15を備えている。なお、これらを備えている以外は、データベース操作装置4は、実施の形態1におけるデータベース操作装置1と同様に構成されている。以下、相違点について説明する。
入力受付部10は、外部から利用者によって入力された操作条件を受け付ける。更に、入力受付部10は、受け付けた操作条件に対応するエンティティオブジェクト12を特定し、特定したエンティティオブジェクト12に、受け付けた操作条件を格納させる。
また、本実施の形態2では、入力受付部10は、コンピュータ2に接続された表示装置6に、操作条件の入力画面を表示させることができる。例えば、操作条件が検索条件である場合は、入力画面には、AND又はORでつながれる複数のフィールドが表示される。利用者は、入力画面上で、キーボードやマウスといった入力装置を用いて、各フィールドにキーワードを入力することによって、検索条件を設定することができる。
結果変換部15は、SQL処理部16によってデータベース3から取得された操作の結果を、エンティティオブジェクト12で登録可能なデータ形式に変換する。更に、結果変換部15は、変換した結果を、取得元のテーブル17に対応しているエンティティオブジェクト12に登録する。
結果出力部11は、結果変換部15によって変換された結果が登録されたエンティティオブジェクト12から、登録された結果を取り出し、取り出した結果を外部に出力する。本実施の形態2では、結果出力部11は、表示装置6に、結果を示す結果画面を表示させ
ることができる。この場合、利用者は、結果を容易に把握することができる。
次に、本発明の実施の形態2におけるデータベース操作装置4の動作について図8を用いて説明する。図8は、本発明の実施の形態2におけるデータベース操作装置の動作を示すフロー図である。また、本実施の形態2においても、データベース操作装置4を動作させることによって、データベース操作方法が実施される。よって、本実施の形態におけるデータベース操作方法の説明は、以下のデータベース操作装置4の動作の説明に代える。なお、適宜図7を参酌する。
また、図8の例も、実施の形態1において図4に示した例と同様に、コンピュータ2(図1参照)が、情報の検索を行う業務システムを構成している場合を示している。図8の例において、エンティティオブジェクト12のフィールドに格納される操作条件は、検索条件である。なお、各エンティティオブジェクト12は、テーブル17に合わせて予め作成されているが、操作条件は設定されていない状態にある。
図8に示すように、先ず、入力受付部10は、入力画面上で入力された検索条件を取得し、これを受け付ける(ステップB1)。次に、入力受付部10は、受け付けた検索条件に対応するエンティティオブジェクト12を特定し、特定したエンティティオブジェクト12のフィールドに検索条件を格納させる(ステップB2)。
次に、SQL生成部14は、エンティティオブジェクト12に基づいてSQL文を生成する(ステップB3)。本実施の形態2において、ステップB3は、実施の形態1において図4に示したステップA1〜A8を全て含んでいる。ステップB3で生成されたSQL文は、SQL処理部16に入力される。
次に、SQL処理部16は、生成されたSQL文をデータベース3に渡し(ステップB4)、そして、データベース3から検索の結果を受け取る(ステップB5)。続いて、結果変換部15は、ステップB5で取得された検索の結果を、エンティティオブジェクト12で登録可能なデータ形式に変換し、変換した結果を、取得元のテーブル17に対応しているエンティティオブジェクト12に登録する(ステップB6)。
その後、結果出力部11は、ステップB6で検索の結果が登録されたエンティティオブジェクト12から、登録された検索の結果を取り出し、取り出した検索の結果を表示装置6に出力する(ステップB7)。これにより、検索の結果が、表示装置6の表示画面に表示され、利用者は、検索の結果を容易に把握することができる。ステップB7が実行されると、データベース操作装置4での処理は終了する。
以上のように、本実施の形態2によれば、利用者は、入力画面上で、直接、検索条件を入力することができる。また、入力された検索条件がエンティティオブジェクト12に設定されるので、本実施の形態2を用いた場合も、実施の形態1を用いた場合と同様に、利用者側でSQLを記述することなく、複数のテーブルにまたがる検索の実行が可能となる。更に、データベース操作装置4においても、複数のテーブルにまたがる検索の実行時において、複雑な処理は要求されず、アクセス性能の低下は抑制される。
また、本実施の形態2におけるプログラムは、コンピュータ2(図1参照)に、図8に示すステップB1〜A7を実行させるプログラムであれば良い。このプログラムをコンピュータ2にインストールし、実行することによって、本実施の形態2におけるデータベース操作装置4とデータベース操作方法とを実現することができる。この場合、コンピュータ2のCPU(Central Processing Unit)は、データアクセスオブジェクト13として機能し、処理を行なう。また、コンピュータ2のCPUは、メモリやハードディスク等の
記憶装置の記憶領域に、エンティティオブジェクト12を構築する。
以上説明した実施の形態1及び2では、SQL生成部14が最初にSELECT文を生成する例が、挙げられている(図4参照)。但し、本発明は、この例に限定されるものではない。本発明では、SQL生成部は、エンティティオブジェクトに設定されている操作条件に基づいて、UPDATE文や、DELETE文を生成することもできる。この場合、データベースに対しては、更新処理や、削除処理が行われる。
本発明によれば、互いに関連するテーブルが存在している場合であっても、利用者側でSQL文を記述することなく、データベースを操作できる。本発明は、リレーショナルデータベースを利用した業務システム、特には、アプリケーションプログラムによってSQLが作成され、このSQLによってデータベースが操作されるシステムに有用である。
1 データベース操作装置(実施の形態1)
2 コンピュータ
3 データベース
4 データベース操作装置(実施の形態2)
5 入力装置
6 表示装置
10 入力受付部
11 結果出力部
12−1〜12−n エンティティオブジェクト
13 データアクセスオブジェクト
14 SQL生成部
15 結果変換部
16 SQL処理部
17−1〜17−n テーブル

Claims (18)

  1. データベースを構成しているテーブル毎に作成されたエンティティオブジェクトと、前記データベースを操作するためのSQL文を生成するSQL生成部とを備え、
    前記エンティティオブジェクトは、対応するテーブルを特定する情報及び操作条件を含み、加えて、前記対応するテーブルに関連するテーブルが存在する場合は、前記関連するテーブルを特定する情報を更に含み、
    前記SQL生成部は、
    前記エンティティオブジェクトが対応する前記テーブルを特定し、
    前記操作条件に応じて、特定した前記テーブルに対する操作を実行するためのSQL文を作成し、そして、
    前記エンティオブジェクトが、前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、含んでいる場合は、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、
    ことを特徴とする、データベース操作装置。
  2. 前記エンティティオブジェクトが、複数のフィールドを備え、
    前記複数のフィールドのうち一のフィールドに、前記対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報が格納され、
    更に、前記対応するテーブルに関連するテーブルが存在する場合は、前記一のフィールドの型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されている、請求項1に記載のデータベース操作装置。
  3. 前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
    前記SQL生成部が、先ず、SELECT文及びFROMを生成し、そして、
    前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、含んでいる場合は、JOIN文を生成する、請求項2に記載のデータベース操作装置。
  4. 外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる入力受付部を更に備えている、請求項1〜3のいずれかに記載のデータベース操作装置。
  5. 前記SQL文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、SQL処理部を、更に備えている、請求項1〜4のいずれかに記載のデータベース操作装置。
  6. 前記データベースから取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、結果変換部と、
    前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、結果出力部とを、更に備えている、請求項5に記載のデータベース操作装置。
  7. (a)データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
    (b)前記操作条件に応じて、前記(a)のステップで特定された前記テーブルに対する操作を実行するためのSQL文を生成する、ステップと、
    (c)前記エンティティオブジェクトが、前記(a)のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
    (d)前記(c)のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、ステップと、
    を有することを特徴とする、データベース操作方法。
  8. 前記エンティティオブジェクトが、複数のフィールドを備え、
    前記複数のフィールドのうち一のフィールドに、前記対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報が格納され、
    更に、前記対応するテーブルに関連するテーブルが存在する場合は、前記一のフィールドの型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されている、請求項7に記載のデータベース操作方法。
  9. 前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
    前記(b)のステップにおいて、SELECT文及びFROMを生成し、
    前記(c)のステップにおいて、前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、
    前記(d)のステップにおいて、JOIN文を生成する、請求項8に記載のデータベース操作方法。
  10. (e)外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる、ステップを更に有する、請求項7〜9のいずれかに記載のデータベース操作方法。
  11. (f)前記SQL文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、ステップを、更に有する、請求項7〜10のいずれかに記載のデータベース操作方法。
  12. (g)前記(f)のステップで取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、ステップと、
    (h)前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、ステップとを、更に有する、請求項11に記載のデータベース操作方法。
  13. コンピュータによってデータベースの操作を実行させるためのプログラムであって、
    前記コンピュータに、
    (a)前記データベースを構成しているテーブル毎に作成され、且つ、対応するテーブルを特定する情報及び操作条件を含む、エンティティオブジェクトから、前記エンティティオブジェクトが対応する前記テーブルを特定する、ステップと、
    (b)前記操作条件に応じて、前記(a)のステップで特定された前記テーブルに対する操作を実行するためのSQL文を生成する、ステップと、
    (c)前記エンティティオブジェクトが、前記(a)のステップで特定されたテーブルに関連するテーブルを特定する情報を更に含んでいるかどうかを判定するステップと、
    (d)前記(c)のステップで、含んでいると判定された場合に、前記関連するテーブルに対する操作を実行するためのSQL文を更に生成する、ステップと、
    を実行させることを特徴とする、プログラム。
  14. 前記エンティティオブジェクトが、複数のフィールドを備え、
    前記複数のフィールドのうち一のフィールドに、前記対応するテーブルを特定する情報として、前記対応するテーブルのいずれかのカラムに登録された情報が格納され、
    更に、前記対応するテーブルに関連するテーブルが存在する場合は、前記一のフィールドの型が、前記関連するテーブルに対応している別のエンティティオブジェクトのクラスに設定されている、請求項13に記載のプログラム。
  15. 前記エンティティオブジェクトが含む操作条件が、前記対応するテーブルを検索対象とする検索条件である場合に、
    前記(b)のステップにおいて、SELECT文及びFROMを生成し、
    前記(c)のステップにおいて、前記複数のフィールドを走査して、前記エンティオブジェクトが前記関連するテーブルを特定する情報を含んでいるかどうかを判定し、
    前記(d)のステップにおいて、JOIN文を生成する、請求項14に記載のプログラム。
  16. (e)外部から入力された操作条件を受け付け、受け付けた操作条件を前記エンティティオブジェクトに格納させる、ステップを、更に前記コンピュータに実行させる、請求項13〜15のいずれかに記載のプログラム。
  17. (f)前記SQL文に記述された操作を前記データベースに対して実行し、前記操作の結果を前記データベースの前記テーブルから取得する、ステップを、更に前記コンピュータに実行させる、請求項13〜16のいずれかに記載のプログラム。
  18. (g)前記(f)のステップで取得された前記操作の結果を、前記エンティティオブジェクトで登録可能なデータ形式に変換し、変換した前記結果を、取得元の前記テーブルに対応している前記エンティティオブジェクトに登録する、ステップと、
    (h)前記結果が登録されたエンティティオブジェクトから、登録された前記結果を取り出し、取り出した前記結果を外部に出力する、ステップとを、更に前記コンピュータに実行させる、請求項17に記載のプログラム。
JP2009206742A 2009-09-08 2009-09-08 データベース操作装置、データベース操作方法、及びプログラム Expired - Fee Related JP5488792B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009206742A JP5488792B2 (ja) 2009-09-08 2009-09-08 データベース操作装置、データベース操作方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009206742A JP5488792B2 (ja) 2009-09-08 2009-09-08 データベース操作装置、データベース操作方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2011059845A true JP2011059845A (ja) 2011-03-24
JP5488792B2 JP5488792B2 (ja) 2014-05-14

Family

ID=43947419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009206742A Expired - Fee Related JP5488792B2 (ja) 2009-09-08 2009-09-08 データベース操作装置、データベース操作方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5488792B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196610A (ja) * 2012-03-22 2013-09-30 Toshiba Corp クエリ発行装置、クエリ発行プログラム、クエリ発行方法
JP2016018366A (ja) * 2014-07-08 2016-02-01 株式会社東芝 データ処理装置およびデータ処理方法
KR101806449B1 (ko) 2016-05-30 2017-12-07 주식회사 인브레인 그래픽 유저 인터페이스를 이용한 ansi 쿼리문 생성 시스템 및 그 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337726A (ja) * 2002-05-20 2003-11-28 Hitachi Software Eng Co Ltd データベースアクセスプログラム生成方法
JP2004164363A (ja) * 2002-11-14 2004-06-10 Nobuhiko Nagamori リレーショナル・データベース構造を樹状図で表示する方法
JP2004530973A (ja) * 2001-02-26 2004-10-07 モトローラ・インコーポレイテッド フレーム完成のためのsql自動生成
JP2006251979A (ja) * 2005-03-09 2006-09-21 Matsushita Electric Ind Co Ltd 可変項目検索システム
JP2006318448A (ja) * 2005-05-12 2006-11-24 Giloong Kim インタフェース画面設計中心のソフトウェア生産工程の自動化方法及び、この方法をプログラム化して収録したコンピュータで読出し可能な記録媒体{Methodforautomationofsoftwaremanufacturingprocessbasedongraphicuserinterfacedesign,andComputerreadablemediumhavingthereoncomputerexecutableinstructionforperformingthesame}

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530973A (ja) * 2001-02-26 2004-10-07 モトローラ・インコーポレイテッド フレーム完成のためのsql自動生成
JP2003337726A (ja) * 2002-05-20 2003-11-28 Hitachi Software Eng Co Ltd データベースアクセスプログラム生成方法
JP2004164363A (ja) * 2002-11-14 2004-06-10 Nobuhiko Nagamori リレーショナル・データベース構造を樹状図で表示する方法
JP2006251979A (ja) * 2005-03-09 2006-09-21 Matsushita Electric Ind Co Ltd 可変項目検索システム
JP2006318448A (ja) * 2005-05-12 2006-11-24 Giloong Kim インタフェース画面設計中心のソフトウェア生産工程の自動化方法及び、この方法をプログラム化して収録したコンピュータで読出し可能な記録媒体{Methodforautomationofsoftwaremanufacturingprocessbasedongraphicuserinterfacedesign,andComputerreadablemediumhavingthereoncomputerexecutableinstructionforperformingthesame}

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196610A (ja) * 2012-03-22 2013-09-30 Toshiba Corp クエリ発行装置、クエリ発行プログラム、クエリ発行方法
JP2016018366A (ja) * 2014-07-08 2016-02-01 株式会社東芝 データ処理装置およびデータ処理方法
KR101806449B1 (ko) 2016-05-30 2017-12-07 주식회사 인브레인 그래픽 유저 인터페이스를 이용한 ansi 쿼리문 생성 시스템 및 그 방법

Also Published As

Publication number Publication date
JP5488792B2 (ja) 2014-05-14

Similar Documents

Publication Publication Date Title
JP4947245B2 (ja) 情報検索装置、情報検索方法、コンピュータ・プログラムおよびデータ構造
US9552441B2 (en) Database mapping of models for reporting tools in model driven development
US8732127B1 (en) Method and system for managing versioned structured documents in a database
JP2007226452A (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US8413109B2 (en) Systems and methods for metamodel transformation
JP4207438B2 (ja) Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム
JP5844824B2 (ja) Sparqlクエリ最適化方法
JP5488792B2 (ja) データベース操作装置、データベース操作方法、及びプログラム
US20080082535A1 (en) Method and system for automatically generating a communication interface
JP2010250449A (ja) 情報処理装置、情報処理方法
US8639709B2 (en) Comparing very large XML data
US20100153438A1 (en) Method and apparatus for searching for hierarchical structure document
JP7381290B2 (ja) 計算機システム及びデータの管理方法
US8898122B1 (en) Method and system for managing versioned structured documents in a database
US9002810B1 (en) Method and system for managing versioned structured documents in a database
JP6589317B2 (ja) 書換装置、処理方法とそのプログラム、および、情報処理装置
US20240028328A1 (en) Storage medium, information processing method, and information processing device
JP5596517B2 (ja) 国際化対応画面生成システム及びプログラム
EP4357911A1 (en) Information processing program, information processing method, and information processing device
JP5190899B2 (ja) 情報処理装置、設定ファイル生成方法、および設定ファイル生成プログラム
JP4693807B2 (ja) プログラム開発支援システム、方法及びプログラム
JP4983397B2 (ja) 文書検索装置、および文書検索方法、並びにコンピュータ・プログラム
JP5696280B1 (ja) 用語統一システム及び用語統一プログラム、並びに用語統一方法
JP2007199987A (ja) 特許情報検索システム
JP2010067213A (ja) 検索対象列決定装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140211

R150 Certificate of patent or registration of utility model

Ref document number: 5488792

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees