JP2003337726A - データベースアクセスプログラム生成方法 - Google Patents

データベースアクセスプログラム生成方法

Info

Publication number
JP2003337726A
JP2003337726A JP2002143978A JP2002143978A JP2003337726A JP 2003337726 A JP2003337726 A JP 2003337726A JP 2002143978 A JP2002143978 A JP 2002143978A JP 2002143978 A JP2002143978 A JP 2002143978A JP 2003337726 A JP2003337726 A JP 2003337726A
Authority
JP
Japan
Prior art keywords
class
database
sql
employee
condition
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.)
Pending
Application number
JP2002143978A
Other languages
English (en)
Inventor
Norikazu Kijima
教和 木島
Kenji Arai
健司 新居
Takashi Tamori
崇史 田森
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2002143978A priority Critical patent/JP2003337726A/ja
Publication of JP2003337726A publication Critical patent/JP2003337726A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 予め設計されたクラスの仕様とデータベース
の仕様との各仕様に基づくクラス及びデータベースを生
成するとともに、1回のSQL文の実行によりデータベ
ース内の各テーブルに適切にアクセスすることのできる
プログラムを生成することを目的とする。 【解決手段】 別々に設計されたクラス仕様110とデ
ータベース仕様120との対応付けが定義された属性・
列対応表130及びメソッド・関連対応表140に基づ
き、クラス仕様110に定義された処理についてデータ
ベース仕様120に定義された各テーブルに対し、レコ
ードの検索,更新,挿入,削除等のデータベース操作を
行うデータベースアクセスクラス150を生成する。ま
た、データベース仕様120に基づき、データベースア
クセスクラス150が検索処理に用いるSQL条件を生
成するSQL条件文生成クラスを生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は既存のデータベース
に含まれるテーブル仕様と、オブジェクト指向手法で設
計したクラスの仕様とを対応させたデータベースアクセ
スプログラムの生成方法に関するものである。
【0002】
【従来の技術】従来、オブジェクト指向手法によるアプ
リケーションの開発において、データベースに対して業
務処理を行うプログラムを生成する場合、予め設計され
たクラスの仕様(属性,メソッド)に対応させてデータ
ベース内のテーブルを生成する方法や、既存のデータベ
ースのテーブルに対応した仕様のクラスを生成する方法
により、データベースの各テーブルに対応付けられたク
ラスを生成する方法が用いられていた。例えば、既に生
成されているデータベースにアクセスするプログラムを
生成する場合、前記データベースのデータベース仕様に
基づきデータベース内の各テーブル毎に1対1に対応付
けられたクラスを生成していた。
【0003】
【発明が解決しようとする課題】しかし、データベース
にアクセスするプログラムを生成する場合において、業
務処理に応じたクラス仕様とデータベース仕様とをそれ
ぞれ別々に設計する場合があるが、従来のように、デー
タベース仕様に基づきクラスを生成する方法又はクラス
仕様に基づきデータベースを生成する方法を用いた場
合、データベース仕様に定義された列の列名とクラス仕
様に定義された属性とが必ずしも対応しないため、いず
れかの仕様に合わせて他方の仕様を変更する作業が必要
となっていた。
【0004】また、前記従来の技術はクラスとテーブル
とを1対1の関係で対応付けて生成するものであったた
め、1件のレコードの値の変更が複数のクラスに及ぶ場
合、各クラス毎に対応するテーブルについて処理を行う
こととなり、複数回のSQL文の実行が必要となるとい
う問題があった。例えば、社員情報として社員の氏名と
所属する課名とを変更する場合において、氏名と課名と
が別々のテーブルに格納されている場合には、各テーブ
ルに対応したクラスのメソッドを呼び出しそれぞれのク
ラスによりテーブルにアクセスすることが必要となって
いた。
【0005】この場合に、1回のSQL文の実行により
処理を行うプログラムの生成方法として、埋め込み型S
QLに対応したプログラムを生成する方法が特開平10
−161914号公報に記載されている。しかし、この
方法は、データベース内のテーブルを構成する列名と列
データを格納する埋め込み変数名と埋め込む変数の定義
とをプログラム生成時に展開することにより、埋め込み
型SQLに対応したプログラムを生成するものであり、
クラス仕様に基づくクラスの生成ができないという問題
があった。
【0006】本発明は前記課題を解決するものであり、
予め設計されたクラス仕様とデータベース仕様とを変更
することなく前記データベース仕様に基づき生成された
データベースに対してアクセスを可能とするとともに、
1回のSQL文の実行によりデータベース内の複数のテ
ーブルに対し適切にアクセスすることのできるプログラ
ムを生成することを目的とする。
【0007】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、データベースに対して業務処理を行う各
クラスの属性及びメソッドに関する情報を含むクラス仕
様と処理対象データを格納したデータベース内のテーブ
ルの列に関する情報及び各テーブル間の列の関連を示す
関連式を含むデータベース仕様と、に基づきデータベー
スアクセスプログラムを生成する方法であって、クラス
仕様に含まれる各クラスの属性とデータベース仕様に含
まれる各テーブルの列との対応付けが定義された属性・
列対応表及びクラス仕様に含まれるメソッドとデータベ
ース仕様に含まれる各テーブル間の列の関連との対応付
けが定義されたメソッド・関連対応表に基づき、前記ク
ラス仕様に基づき生成された各クラスの行う業務処理に
応じてデータベース内の複数のテーブルに対しレコード
の取得,更新,挿入,削除の各データベース操作を行う
データベースアクセスクラスを生成するステップを備え
ることを特徴とする。また、前記データベース仕様に予
め定義された各テーブル毎の検索条件式と前記関連式と
に基づき、ユーザにより入力された検索条件に応じて前
記検索条件式及び関連式に基づくSQL条件文を生成す
るSQL条件文生成クラスを生成するステップと、前記
データベースアクセスクラスを生成するステップにおい
て、SQL条件文生成クラスの生成したSQL条件文に
基づき複数件のレコードを取得する処理を定義するステ
ップとを備えることを特徴とする。
【0008】
【発明の実施の形態】以下、本発明の一実施の形態につ
いて、図面を参照して具体的に説明する。図1は本発明
の一実施の形態に係るデータベースアクセスプログラム
の生成方法の概要を説明するための図である。本実施の
形態では、プログラム生成装置により、クラス仕様11
0及びデータベース仕様120を読み込ませ、各仕様に
定義された情報に基づきデータベースアクセスプログラ
ムを生成する。本実施の形態に係るプログラム生成方法
は、別々に設計されたクラス仕様110とデータベース
仕様120との対応付けが定義された属性・列対応表1
30及びメソッド・関連対応表140を作成し、属性・
列対応表130及びメソッド・関連対応表140に基づ
き、クラス仕様110に定義された処理についてデータ
ベースに対しレコードの検索,更新,挿入,削除等のデ
ータベース操作を行うデータベースアクセスクラス15
0を生成する。また、データベース仕様120に含まれ
るSQL関連122及びSQL条件123に基づき、デ
ータベースアクセスクラス150が検索処理に用いるS
QL条件を生成するSQL条件文生成クラスを生成す
る。
【0009】クラス仕様110には、データベースに対
して業務処理を行う各クラスの属性,メソッド及び各ク
ラスの関連が定義されている。データベース仕様120
は、テーブル仕様121とSQL関連122とSQL条
件123とから構成される。テーブル仕様121には、
データベース内において業務処理対象となるデータを格
納したテーブルの各列について列名及びデータ型が定義
されている。SQL関連122には、各テーブル間の列
の関連について関連式が定義されている。SQL条件1
23には、各テーブルに対する検索条件を示す条件式が
定義されている。
【0010】まず、データベースアクセスクラスを生成
する処理の概要を説明する。データベースアクセスクラ
スの生成処理では、別々に作成されたクラス仕様110
とデータベース仕様120とを読み込み、ユーザに各仕
様の対応付けを定義させる。具体的には、クラス仕様1
10に定義された各業務処理クラスの属性に対応するテ
ーブルの列として、データベース仕様120のテーブル
仕様121に定義された列名の中からユーザに選択さ
せ、各業務処理クラスについて属性・列対応表130を
作成する。また、各業務処理クラスのメソッドについ
て、SQL関連122に定義された関連式の中から対応
する関連式をユーザに選択させ、各業務処理クラスにつ
いてメソッド・関連対応表140を作成する。クラス仕
様110に基づき業務処理クラスを生成するとともに、
属性・列対応表130とメソッド・関連対応表140と
に基づき前記業務処理クラスの属性・メソッドに対応付
けられた複数のテーブルにアクセスしてレコードの抽
出,更新,追加,削除の各データベース操作を行うデー
タベースアクセスクラス150を生成する。
【0011】次に、SQL条件文生成クラスを生成する
処理の概要を説明する。SQL条件文生成クラスの生成
処理では、データベース仕様120を読み込み、データ
ベース仕様120に含まれるSQL関連122に対応す
るSQL関連クラスとSQL条件123に対応するSQ
L条件クラスとを生成する。生成されたSQL関連クラ
スとSQL条件クラスとに基づき、検索処理の際に入力
された検索条件に応じて前記SQL関連クラスとSQL
条件クラスとから取得したSQL関連及びSQL条件文
を組み合わせて、データベースアクセスクラスの引数と
なるSQL条件文を作成するSQL条件文生成クラス1
60を生成する。
【0012】最後に、本実施の形態により生成されたデ
ータベースアクセスクラス150及びSQL条件文生成
クラス160を、業務処理クラスとともに実装してアプ
リケーション170の開発を行う。
【0013】図2は、本実施の形態により生成されたプ
ログラムを実装したアプリケーションの概略構成を示す
ブロック図である。アプリケーションは、本実施の形態
により生成されたデータベースアクセスクラス150,
SQL条件文生成クラス160及び業務処理クラス21
1を備えた制御部210と、データベース220と、入
出力部230とを有している。業務処理クラス211は
クラス仕様110に基づき生成され、データベース22
0はデータベース仕様120に基づき生成される。本ア
プリケーションでは、入出力部230から入力に基づい
て業務処理クラス211の行う処理に応じて、データベ
ースアクセスクラス150がデータベース内の各テーブ
ルからレコードの取得,挿入,更新,削除を行う。入力
された検索条件に基づき複数のレコードを取得する場合
には、検索条件に基づきSQL条件文生成クラス160
がSQL条件文を生成してデータベースアクセスクラス
150に渡し、データベースアクセスクラス150がS
QL条件文に基づきデータベースの各テーブルから複数
件のレコードを取得する。ここで、SQL条件文とはS
QL(Structured Query Language)を用いた条件文
を示す。
【0014】以下、本実施の形態に係るプログラム生成
処理について、具体例を用いて詳細に説明する。図3
は、本実施の形態に係るプログラム生成方法に用いられ
るクラス仕様の一例を示すクラス図である。クラス仕様
110には、データベースに対し処理を行う業務処理ク
ラスとしての従業員クラス310,社員クラス320,
派遣社員クラス330,部署クラス340,月別勤休ク
ラス350,日別勤休クラス360について、属性,メ
ソッド及び各業務処理クラスの関連が定義されている。
例えば、従業員クラス310については、属性311と
して「従業員ID」及び「名前」が定義され、他クラス
から呼び出し可能なメソッド312として「所属を取得
する」等が定義されている。また、従業員クラス310
は、サブクラスとして社員クラス320及び派遣社員ク
ラス330を有し、部署クラス340及び月別勤休クラ
スと関連付けられることが定義されている。なお、各業
務処理クラス間の結線は関連を示すものであり、各線上
の「1」「n」は関連の多重度を示す(「n」は複数を
示す)。例えば、従業員クラス310と部署クラス34
0との関係では、1つの「部署」に複数の「従業員」が
所属していることを示す。また、部署クラス340同士
の関係では、1つの部署(親部署)に対し、複数の部署
(子部署)が配置されていることを示す。
【0015】図4は、本実施の形態に係るプログラム生
成方法に用いられるデータベース仕様120に含まれる
テーブル仕様121の一例を示す図である。テーブル仕
様121は、データベース内の各テーブル毎にテーブル
を構成する列の列名及びデータ型が定義されている。本
実施の形態では、従業員テーブル410,社員テーブル
420,派遣社員テーブル430,部署テーブル44
0,日別勤休テーブル450,月別勤休テーブル460
の各テーブルに含まれる列についての列名及びデータ型
が定義されている。例えば、従業員テーブル410は文
字型の部署コード411,文字型の従業員ID412,
文字型の名前413の各列から構成され、社員テーブル
420は文字型の従業員ID421,日付型の入社年月
日422,数値型の年齢423の各列から構成されるこ
とを示す。
【0016】図5は、データベース仕様120に含まれ
るSQL関連122の一例を示す図である。SQL関連
122には、あるテーブルのデータ項目に対して1対1
の関係を有する他テーブルのデータ項目を示す関連式と
当該関連式についての関連名が定義されている。本実施
の形態では、従業員テーブル410に対する部署テーブ
ル440及び日別勤休テーブル450の関連を示す従業
員テーブル関連510と、部署テーブル440に対する
従業員テーブル410及び他の部署テーブル440の関
連を示す部署テーブル関連520とが定義されている。
例えば、従業員テーブル関連510の従業員所属関連5
11は、従業員テーブル410の部署コード411が部
署テーブル440の部署コード441に対して1対1の
関係を有することを示す。また、従業員勤休関連512
は、従業員テーブル410の従業員ID412が日別勤
休テーブル450の社員ID451に対して1対1の関
係を有することを示す。
【0017】図6は、本実施の形態に係るプログラム生
成方法に用いられるSQL条件の一例を示す図である。
SQL条件123には、各テーブルからレコードを抽出
する際に用いられる条件式と、当該条件式についての条
件名が定義されている。本実施の形態では、社員テーブ
ル420,部署テーブル440,日別勤休テーブル45
0の各テーブルについて検索処理を行う場合の条件を示
す社員テーブル条件610,部署テーブル条件620,
日別勤休テーブル条件630とが定義されている。ここ
で、条件式中の「n」はユーザが入力する任意の値を示
す。例えば、社員テーブル条件610の社員入社年月日
条件611は、検索条件として入力された年月日よりも
社員テーブル420の入社年月日422が前のレコード
を検索することを示す。また、社員年齢条件612は、
検索条件として入力された年齢よりも社員テーブル42
0の年齢423が高いレコードを検索することを示す。
【0018】図7は、本実施の形態に係るプログラム生
成方法に用いられる属性・列対応表130の一例を示す
図である。属性・列対応表130では、クラス仕様11
0に定義された各業務処理クラスの属性に対し、テーブ
ル仕様121に定義された各テーブルの列が対応付けら
れている。本実施の形態では、社員クラスの属性・列対
応表710,派遣社員クラスの属性・列対応表720,
部署クラスの属性・列対応表730,日別勤休クラスの
属性・列対応表740が作成されている。例えば、社員
クラスの属性・列対応表710では、社員クラス320
に含まれる従業員ID711について従業員テーブル4
10の従業員ID412及び社員テーブル420の従業
員ID421が対応付けられている。同様に名前71
2,入社年月日713及び年齢714について列が対応
付けられている。なお、各属性・列対応表に含まれる
「Key」欄は、各業務処理クラスの属性において検索
キーとなる属性を定義したものであり、「Key」欄に
「1」が定義されている属性が検索キーとなる。ここで
検索キーとは、データベースから1件のレコードを抽出
する際に、引数として用いられる属性を示す。
【0019】属性・列対応表130をユーザの選択に基
づき作成する手順を説明する。図8は、属性・列対応表
130の作成手順を示すフローチャートである。属性・
列対応表130の作成においては、クラス仕様110と
テーブル仕様121とを読み込み、クラス仕様110を
参照して着目していない業務処理クラスがあるか否かを
判定する(ステップ801)。着目していない業務処理
クラスがある場合には、1つのクラスに着目し(ステッ
プ802)、当該業務処理クラスにおいて着目していな
い属性があるか否かを判定する(ステップ803)。着
目していない属性がある場合には、1つの属性に着目し
(ステップ804)、当該属性に対しテーブル仕様12
1に定義された列の中からユーザにより選択された列を
対応付ける(ステップ805)。全ての属性についてユ
ーザにより選択された列を対応付けた後(ステップ80
3)、他の全ての業務処理クラスについても同様に対応
付けし(ステップ802〜ステップ805)、属性・列
対応表130の作成を終了する(ステップ801)。例
えば、社員クラス320に着目し(ステップ802)、
社員クラス320の属性として定義されている従業員I
Dについて、ユーザにより選択された従業員テーブルの
従業員IDと社員テーブルの社員IDとを対応付ける
(ステップ804,805)。同様に、名前,入社年月
日,年齢の各属性についてもユーザの選択により列を対
応付け、社員クラスの属性・列対応表710を作成す
る。なお、従業員クラス310については、サブクラス
としての社員クラス320及び派遣社員クラス330に
属性が含まれるため、属性・列対応表は作成しない。
【0020】図9は、本実施の形態に係るプログラム生
成方法に用いられるメソッド・関連対応表140の一例
を示す図である。メソッド・関連対応表140では、ク
ラス仕様110に定義された他クラスから呼び出し可能
なメソッドに対し、SQL関連122に定義された各関
連が対応付けられている。本実施の形態では、従業員ク
ラスのメソッド・関連対応表910,部署クラスのメソ
ッド・関連対応表920が作成されている。例えば、従
業員クラスのメソッド・関連対応表910では、従業員
クラス910に含まれる「所属を取得する()」メソッ
ド911について従業員所属関連511が対応付けられ
ている。同様に「月別勤休を取得する()」メソッド9
12,「責任部署一覧を取得する()」メソッド913
について関連が対応付けられている。また、メソッド・
関連対応表は、各業務処理クラスにおいて他クラスから
呼び出し可能なメソッドとSQL関連とを対応付けたも
のである。例えば、本実施の形態では、従業員クラスの
「所属を取得する()」というメソッドに、従業員所属
関連を対応付けている。
【0021】メソッド・関連対応表140をユーザの選
択に基づき作成する手順を説明する。図10は、メソッ
ド・関連対応表140の作成手順を示すフローチャート
である。メソッド・関連対応表140の作成において
は、クラス仕様110とSQL関連122とを読み込
み、クラス仕様110を参照して着目していない業務処
理クラスがあるか否かを判定する(ステップ100
1)。着目していない業務処理クラスがある場合には、
1つの業務処理クラスに着目し(ステップ1002)、
当該業務処理クラスにおいて着目していないメソッドが
あるか否かを判定する(ステップ1003)。着目して
いないメソッドがある場合には、1つのメソッドに着目
し(ステップ1004)、当該メソッドに対しSQL関
連の中からユーザにより選択された関連を対応付ける
(ステップ1005)。全てのメソッドについて着目し
てユーザにより選択された関連を対応付けた後(ステッ
プ1003)、他の全ての業務処理クラスについても同
様の対応付けを行い(ステップ1002〜ステップ10
05)、メソッド・関連対応表130の作成を終了する
(ステップ1001)。例えば、従業員クラス310に
着目し(ステップ1002)、従業員クラス310のメ
ソッド312として定義されている「所属を取得す
る()」について、ユーザにより選択された従業員所属
関連を対応付ける(ステップ1004,1005)。同
様に、「月別勤休を取得する()」「責任部署一覧を取
得する()」についてもユーザの選択によりSQL関連
を対応付け、従業員クラスのメソッド・関連対応表91
0を作成する。
【0022】図11は、属性・列対応表130及びメソ
ッド・関連対応表140に基づき生成したデータベース
アクセスクラス150を示すクラス図である。本実施の
形態では、データベースアクセスクラス150として、
従業員SQLCreaterクラス1110,部署SQLCreat
erクラス1120,日別勤休SQLCreaterクラス11
30を生成する。各SQLCreaterクラス1110,1
120,1130は、データベース操作として検索キー
に対応するレコードの挿入,更新,削除,取得及びSQ
L条件文生成クラス160の生成するSQL条件に基づ
き複数件のレコードを取得する処理を行う。また、クラ
ス仕様110に定義された業務処理クラスとして、従業
員クラス1140,社員クラス1150,派遣社員クラ
ス1160,部署クラス1170,月別勤休クラス11
80,月別勤休クラス1190を生成する。従業員クラ
ス1140,部署クラス1170,月別勤休クラス11
80,日別勤休クラス1190の各クラスについて、対
応するSQLCreaterクラス1110,1120,11
30が引数とする検索キーを生成するキークラス114
1,1171,1181,1191を生成する。例え
ば、従業員IDが入力された場合、従業員キークラス1
141は従業員SQLCreaterクラス1110が引数と
して用いる従業員キーを生成し、従業員SQLCreater
クラス1110は従業員キークラス1141から渡され
た従業員キーにより、従業員クラス1140の処理に基
づきデータベース220に対しレコードの挿入,更新,
削除,取得のいずれかの処理を行う。また、ある検索条
件が入力された場合、SQL条件文生成クラス160は
従業員SQLCreaterクラス1110の複数件取得メソ
ッドの引数として用いるSQL条件文を生成し、従業員
SQLCreaterクラス1110はSQL条件文生成クラ
ス160から渡されたSQL条件文によりデータベース
220から複数件のレコードを取得する処理を行う。
【0023】本実施の形態により、属性・列対応表13
0及びメソッド・関連対応表140に基づきデータベー
スアクセスクラス及び検索キークラスを生成する手順を
説明する。図12は、属性・列対応表130及びメソッ
ド・関連対応表140に基づくデータベースアクセスク
ラス及び検索キークラスの生成手順を示すフローチャー
トである。本処理では、属性・列対応表130及びメソ
ッド・関連対応表140を読み込み、属性・列対応表1
30を参照して着目していない業務処理クラスがあるか
否かを判定する(ステップ1201)。着目していない
業務処理クラスがある場合には、1つの業務処理クラス
に着目し(ステップ1202)、着目した業務処理クラ
スのKeyに対応する属性を保持するキークラスを生成
する(ステップ1203)。例えば、従業員クラス11
40については、従業員クラス1140のサブクラスで
ある社員クラス1150及び派遣社員クラス1160の
属性・列対応表710,720においてKeyとして定
義されている従業員IDを保持する従業員キークラス1
141を生成する。キークラスの生成した検索キーを引
数として、データベース内のテーブルから1件のレコー
ドを取得するコードを1件取得メソッドに生成する(ス
テップ1204)。例えば、従業員クラス1140につ
いては、従業員IDを引数として社員クラス及び派遣社
員クラスの属性・列対応表710,720に基づき従業
員テーブル410,社員テーブル420,派遣社員テー
ブル430から1件のレコードを取得するコードを生成
する。また、従業員クラスのメソッド・関連対応表91
0に基づき、従業員が所属する部署を部署テーブル44
0から1件取得するコード,従業員の当月勤休を月別勤
休テーブル460から1件取得するコード,従業員が責
任を持つ部署を部署テーブル440から複数件取得する
コードを生成する。SQL条件文を引数として、着目し
た業務処理クラスのインスタンスを各テーブルから複数
件取得するコードを複数件取得メソッドに生成する(ス
テップ1205)。この処理では、ステップ1204と
同様に各属性・列対応表710,720及びメソッド・
関連対応表910に基づき、各テーブル410,42
0,430,440,450,460からSQL条件文
に応じた複数件のレコードを取得するコードを生成す
る。ここで引数となるSQL条件文は、SQL条件文生
成クラス160により生成される。
【0024】次に、着目した業務処理クラスの属性・列
対応表に表れるテーブルで着目していないテーブルがあ
るかを判定する(ステップ1206)。例えば、従業員
クラス1140については、社員クラス及び派遣社員ク
ラスの属性・列対応表710,720の「テーブルと列
名」欄を参照し、当該欄に表れるテーブルに基づき判定
する。着目していないテーブルがある場合には、1つの
テーブルに着目し(ステップ1207)、着目したテー
ブルに対応する着目した業務処理クラスの属性の値をデ
ータベースのテーブルへ挿入するコードを1件挿入する
メソッドに生成し(ステップ1208)、前記属性の値
をデータベースのテーブルへ更新するコードを1件更新
するメソッドに生成する(ステップ1209)。例え
ば、従業員テーブル410に着目し、従業員クラス11
40に属性としての名前を従業員テーブル410に挿入
又は更新するコードを生成する。着目したクラスのキー
クラスを引数として、テーブルからレコードを1件削除
するコードを1件削除するメソッドに生成する(ステッ
プ1210)。この処理では、従業員キークラス114
1の生成した検索キーを引数として、従業員テーブル4
10からレコードを1件削除するコードを生成する。ス
テップ1207〜1210の処理を着目した業務処理ク
ラスの属性・列対応表に表れる全てのテーブルについて
行った後(ステップ1206)、他の業務処理クラスに
ついてステップ1202〜1210の処理を行うことに
よりデータベースアクセスクラスの生成処理を終了する
(ステップ1201)。
【0025】図13は、SQL関連122及びSQL条
件123に基づき生成したSQL条件文生成クラス16
0を示すクラス図である。SQL条件文生成クラス16
0は、入力された検索条件に応じてSQL関連122に
定義された関連式に基づきSQL条件文を生成するSQ
L関連クラスと、SQL条件123に定義された条件式
に基づきSQL条件文を生成するSQL条件クラスと、
SQL関連クラス及びSQL条件クラスが生成したSQ
L条件文を組み合わせてSQL条件文を生成するSQL
関連・条件クラスとから構成されている。本実施の形態
では、SQL関連122としての従業員テーブル関連5
10,部署テーブル関連520とSQL条件123とし
ての社員テーブル条件610,部署テーブル条件62
0,日別勤休テーブル条件630とに含まれる各関連及
条件に対応する各関連クラス1321〜1324及び各
条件クラス1331〜1334を生成し、全てのクラス
のスーパークラスとしてSQL関連・条件クラス131
0を生成する。SQL条件文生成クラスでは、例えば
「2002年5月20日以前に入社した社員の情報につ
いて部署名を含んだ情報を取得する」という検索条件が
入力された場合に、社員入社年月日条件クラス1332
が条件式「入社年月日<n」に基づくSQL条件文を生
成し、従業員所属関連1321が関連式「部署コード=
部署.部署コード」に基づくSQL条件文を生成し、S
QL関連・条件クラス1310のandメソッドで2つ
の条件を結合する。SQL関連・条件クラス1310
は、結合した条件に基づき従業員SQLCreaterクラス
1140で引数として用いるSQL条件文を生成する処
理を行う。
【0026】本実施の形態により、SQL関連122及
びSQL条件123に基づきSQL条件文生成クラスを
生成する手順を説明する。図14は、SQL関連122
及びSQL条件123に基づくSQL条件文生成クラス
の生成手順を示すフローチャートである。本処理では、
データベース仕様120を読み込み、データベース仕様
120に含まれるSQL条件123について各条件に定
義された条件名毎に参照し、着目していない条件がある
か否かを判定する(ステップ1401)。着目していな
い条件がある場合には、1つの条件に着目し(ステップ
1402)、着目した条件に対応するSQL条件クラス
を生成する(ステップ1403)。例えば、社員テーブ
ル条件610の社員入社年月日条件611に対応した社
員入社年月日条件クラス1332を生成する。生成した
SQL条件クラスに着目したSQL条件中に表れるnの
個数だけの引数をとるコンストラクタを生成し、引数で
与えられた値からSQL条件文を作成するコードを生成
する(ステップ1404)。この処理では、社員入社年
月日条件611の条件式中のnの個数だけ引数をとるコ
ンストラクタを生成し、引数で与えられた値からSQL
条件文を生成するコードを社員入社年月日条件クラス1
331に生成する(ステップ1404)。ステップ140
2〜ステップ1404を繰り返し、社員年齢条件クラス
1332,部署名一致条件クラス1333,月別勤休条
件クラス1334を生成する。
【0027】次に、SQL関連122について各関連に
定義された関連名毎に参照し、着目していない関連があ
るか否かを判定する(ステップ1405)。着目してい
ない関連がある場合には、1つの関連に着目し(ステッ
プ1406)、着目した関連に対応するSQL関連クラ
スを生成する(ステップ1407)。例えば、従業員テ
ーブル関連510の従業員所属関連511に対応した従
業員所属関連クラス1321を生成する。生成したSQ
L関連クラスに着目したSQL関連中の関連式に基づき
SQL条件文を作成するコードを生成する(ステップ1
408)。ステップ1406〜1408を繰り返し、従
業員勤休関連クラス1322,部署責任関連クラス13
23,親部署関連クラス1324を生成する。最後に各
SQL条件クラス及びSQL関連クラスのスーパークラ
スとして、SQL関連・条件クラス1310を生成し
(ステップ1409)、生成したSQL関連・条件クラ
ス1310にSQL条件クラス及びSQL関連クラスが
作成する複数のSQL条件文に基づき1つのSQL条件
文を作成するコードを生成する(ステップS141
0)。
【0028】以上のように、本実施の形態によれば、別
々に設計されたクラス仕様及びデータベース仕様に基づ
き、各業務処理クラスの属性と各テーブルの列との対応
付けを定義した属性・列対応表と各業務処理クラスのメ
ソッドとSQL関連との対応付けを定義したメソッド・
関連対応表とを作成し、当該属性・列対応表及びメソッ
ド・関連対応表に基づきレコードの取得,挿入,更新,
削除の各データベース操作を行うデータベースアクセス
クラスを生成する。従って、クラス仕様又はデータベー
ス仕様の変更を行うことなく前記データベース仕様に応
じたデータベースに対して適切にアクセスすることので
きるデータベースアクセスプログラムを生成することが
できる。また、クラス仕様に基づき生成された業務処理
クラスによる値の変更が複数のクラスに及ぶ場合であっ
ても、各属性及びメソッドに対応付けられた各テーブル
に対しデータベースアクセスクラスが処理を行うため、
1回のSQL文の実行により複数のテーブルに対する処
理を行うことができる。また、入力された検索条件に応
じてデータベースアクセスクラスが引数とするSQL条
件を、データベース仕様に含まれるSQL関連及びSQ
L条件に基づき生成するSQL条件文生成クラスを生成
することとしたので、埋め込み型SQLを用いることな
く適切なSQL条件文によりデータベース操作を行うこ
とができる。さらに、データベースアクセスクラスの部
品化及びSQL条件文生成クラスの部品化におけるSQ
L文のカプセル化が行われるので、メンテナンス性が向
上する。
【0029】
【発明の効果】以上、説明したように、本発明によれ
ば、クラス仕様又はデータベース仕様の変更を行うこと
なく前記データベース仕様に応じたデータベースに対し
て適切にアクセスすることのできるデータベースアクセ
スプログラムを生成することができるなお、本発明を使
用して開発された部品やシステムはデータベース仕様の
SQL関連、SQL条件を修正するだけで、他データベ
ースでの動作が可能となる。
【図面の簡単な説明】
【図1】 本発明の一実施の形態に係るプログラム生成
方法の概要を説明するための図である。
【図2】 本発明により生成されたプログラムを実装し
たアプリケーションの一例を示すブロック図である。
【図3】 クラス仕様の一例を示すクラス図である。
【図4】 データベース仕様に含まれるテーブル仕様の
一例を示す図である。
【図5】 データベース仕様に含まれるSQL関連の一
例を示す図である。
【図6】 データベース仕様に含まれるSQL条件の一
例を示す図である。
【図7】 属性・列対応表の一例を示す図である。
【図8】 属性・列対応表の作成手順を示すフローチャ
ートである。
【図9】 メソッド・関連対応表の一例を示す図であ
る。
【図10】 メソッド・関連対応表の作成手順を示すフ
ローチャートである。
【図11】 本実施の形態により生成されたデータベー
スアクセスクラスを示すクラス図である。
【図12】 データベースアクセスクラスの生成処理手
順を示すフローチャートである。
【図13】 本実施の形態により生成されたSQL条件
・SQL関連クラスを示すクラス図である。
【図14】 SQL関連・条件クラスの生成処理手順を
示すフローチャートである。
【符号の説明】
110…クラス仕様、120…データベース仕様、12
1…テーブル仕様、122…SQL関連、123…SQ
L条件、130…属性・列対応表、140…メソッド・
関連対応表、150…データベースアクセスクラス、1
60…SQL条件文生成クラス、170…アプリケーシ
ョン。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 新居 健司 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウエアエンジニアリング株式会 社内 (72)発明者 田森 崇史 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウエアエンジニアリング株式会 社内 Fターム(参考) 5B082 GA08

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 データベースに対して業務処理を行う各
    クラスの属性及びメソッドに関する情報を含むクラス仕
    様と処理対象データを格納したデータベース内のテーブ
    ルの列に関する情報及び各テーブル間の列の関連を示す
    関連式を含むデータベース仕様とに基づきデータベース
    アクセスプログラムを生成する方法であって、 クラス仕様に含まれる各クラスの属性とデータベース仕
    様に含まれる各テーブルの列との対応付けが定義された
    属性・列対応表及びクラス仕様に含まれるメソッドとデ
    ータベース仕様に含まれる各テーブル間の列の関連との
    対応付けが定義されたメソッド・関連対応表に基づき、 前記クラス仕様に基づき生成された各クラスの行う処理
    に応じてデータベース内の複数のテーブルに対しレコー
    ドの取得,更新,挿入,削除の各データベース操作を行
    うデータベースアクセスクラスを生成するステップを備
    えることを特徴とするデータベースアクセスプログラム
    生成方法。
  2. 【請求項2】 前記データベース仕様に予め定義された
    各テーブル毎の検索条件式と前記関連式とに基づき、ユ
    ーザにより入力された検索条件に応じて前記検索条件式
    及び関連式に基づくSQL条件文を生成するSQL条件
    文生成クラスを生成するステップと、 前記データベースアクセスクラスを生成するステップに
    おいて、SQL条件文生成クラスの生成したSQL条件
    文に基づき複数件のレコードを取得する処理を定義する
    ステップとを備えることを特徴とする請求項1に記載の
    データベースアクセスプログラム生成方法。
JP2002143978A 2002-05-20 2002-05-20 データベースアクセスプログラム生成方法 Pending JP2003337726A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002143978A JP2003337726A (ja) 2002-05-20 2002-05-20 データベースアクセスプログラム生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002143978A JP2003337726A (ja) 2002-05-20 2002-05-20 データベースアクセスプログラム生成方法

Publications (1)

Publication Number Publication Date
JP2003337726A true JP2003337726A (ja) 2003-11-28

Family

ID=29703768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002143978A Pending JP2003337726A (ja) 2002-05-20 2002-05-20 データベースアクセスプログラム生成方法

Country Status (1)

Country Link
JP (1) JP2003337726A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228200A (ja) * 2005-02-18 2006-08-31 Microsoft Corp リレーションシップモデリング
JP2011059845A (ja) * 2009-09-08 2011-03-24 Nec Corp データベース操作装置、データベース操作方法、及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228200A (ja) * 2005-02-18 2006-08-31 Microsoft Corp リレーションシップモデリング
JP2011059845A (ja) * 2009-09-08 2011-03-24 Nec Corp データベース操作装置、データベース操作方法、及びプログラム

Similar Documents

Publication Publication Date Title
US7401094B1 (en) Automated generation of dynamic data entry user interface for relational database management systems
US6185556B1 (en) Method and apparatus for changing temporal database
US20040068489A1 (en) SQL query construction using durable query components
US20060106856A1 (en) Method and system for dynamic transform and load of data from a data source defined by metadata into a data store defined by metadata
JP2009509271A (ja) 抽出、変換、及び読み込みタスクの構成に基づくデータプロファイルのための装置及び方法
JP2000090098A (ja) データベース問い合わせ方法及びその実施装置並びにその処理プログラムを記録した媒体
US9805112B2 (en) Method and structure for managing multiple electronic forms and their records using a static database
US20080162446A1 (en) Linked logical fields
JPH04237374A (ja) データベース・システム及び分析方法
JP2003337726A (ja) データベースアクセスプログラム生成方法
JP2003150762A (ja) プロジェクト情報連携方法およびシステム
JP2002109448A (ja) 帳票処理装置、帳票処理方法、記憶媒体
JPH11161656A (ja) データベース検索・抽出システムおよびデータベース検索・抽出用制御プログラムを記録した記録媒体
US20020123811A1 (en) Production management system and program
JP2001166928A (ja) ジョブネットの自動生成装置
JP2004126680A (ja) Sql隠蔽型データベースアクセス方法及びコンピュータプログラム
JP3529301B2 (ja) データファイル自動変換装置
JP3245635B2 (ja) ソフトウェア生産物の標準化方法及び解析方法
US20060004857A1 (en) Method, system and program product for normalization of database result sets
JP2001167120A (ja) 会議資料作成支援用システム
JP2000276386A (ja) リレーショナルデータベースの関連を利用したプログラム生成方法及び装置
JPH0736737A (ja) テストデータ作成方法
Mitrpanont et al. Design and development of a multiversion OLAP application
JP2000267906A (ja) データベースモデル変換方法
JPH09101966A (ja) 回答支援システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080307

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080905