JP5163662B2 - File generation system and file generation method - Google Patents
File generation system and file generation method Download PDFInfo
- Publication number
- JP5163662B2 JP5163662B2 JP2010013048A JP2010013048A JP5163662B2 JP 5163662 B2 JP5163662 B2 JP 5163662B2 JP 2010013048 A JP2010013048 A JP 2010013048A JP 2010013048 A JP2010013048 A JP 2010013048A JP 5163662 B2 JP5163662 B2 JP 5163662B2
- Authority
- JP
- Japan
- Prior art keywords
- sql statement
- file
- class
- generation
- columns
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
本発明は、ファイルを生成するファイル生成システムおよびファイル生成方法に関し、特にO/Rマッピング分野においてファイルを生成するファイル生成システムおよびファイル生成方法に関する。 The present invention relates to a file generation system and a file generation method for generating a file, and more particularly to a file generation system and a file generation method for generating a file in the field of O / R mapping.
iBATISのiBATORでは、基本的なCRUD(Create、Read、Update、Delete)のSQL(Structured Query Language)文を生成し、データアクセスクラスを通してそれを利用することができる機能が提供されている。この機能のReadでは、以下の機能が提供されている。
(1)主キーを条件としてSELECTする機能
(2)値がセットされているカラムをANDで繋げた文を条件としてSELECTする機能
(1)の機能は、たいていのO/Rマッピングで提供されている機能である。一方、(2)の機能は、iBATORの独自の機能である。
The iBATIS of iBATIS provides a function that generates a SQL (Structured Query Language) SQL of a basic CRUD (Create, Read, Update, Delete) and uses it through a data access class. This function Read provides the following functions.
(1) A function that performs a SELECT on the primary key as a condition (2) A function that performs a SELECT on a condition in which a column in which a value is set is connected with AND is a condition (1) It is a function. On the other hand, the function (2) is a unique function of iBATOR.
しかしながら、上述した(1)および(2)の機能においては、同じメソッド内で値がセットされているという前提で検索条件を構築するため、利用する側からは内部で使用される条件を推測しにくく、バグの原因を発生させてしまう。 However, in the functions (1) and (2) described above, since the search condition is constructed on the assumption that the value is set in the same method, the condition used internally is estimated from the user side. It is difficult to cause bugs.
また、プログラム言語の1つであるJava(登録商標)の後発として登場したRuby on Railsは、Javaよりも生産性が一般的に高いと言われている。その理由の1つとして挙げられるのが、Ruby on RailsがActive Recordの動的ファインダー機能を有するという点である。 Also, Ruby on Rails, which appeared as a latecomer of Java (registered trademark), one of the programming languages, is said to be generally more productive than Java. One reason for this is that Ruby on Rails has an Active Record dynamic finder function.
Ruby on Railsのような動的言語では「MethodMissingException」が発生した場合にある特定のメソッドを動作させ、その中でメソッド名を解析することができるメタプログラミングの機能がある。このメソッド名の解析機能により動的ファインダー機能を実現している。 In a dynamic language such as Ruby on Rails, there is a function of metaprogramming that allows a specific method to operate when “MethodMissingException” occurs and analyze the method name. This method name analysis function realizes the dynamic finder function.
Ruby on RailsのActive Recordでは、動的ファインダー機能が提供されているが、完全一致の検索のみにしか利用できない。さらに、ANDで繋げた条件文しか利用できない。 Ruby on Rails' Active Record provides a dynamic finder function, but can only be used to search for an exact match. Furthermore, only conditional statements connected by AND can be used.
一般的にJavaはRuby on Railsよりも動作速度が速いため、エンタープライズ向けに多く用いられている。そこで、Javaの生産性をRuby on Railsと同等にすることができれば、エンタープライズシステム開発の生産性を向上させることができるため、情報技術の発展に貢献することができる。 In general, Java has a higher operation speed than Ruby on Rails, and is therefore widely used for enterprises. Therefore, if the productivity of Java can be made equivalent to Ruby on Rails, the productivity of enterprise system development can be improved, which can contribute to the development of information technology.
また、RDBMS(リレーショナルデータベースマネイジメントシステム)から取得された項目定義情報を解析し、その解析結果と取得した領域パラメータとから所望のSQL定義文を作成する技術が考えられている(例えば、特許文献1参照。)。 Further, a technique for analyzing item definition information acquired from an RDBMS (relational database management system) and creating a desired SQL definition sentence from the analysis result and the acquired area parameter is considered (for example, Patent Document 1). reference.).
しかしながら、Ruby on Railsは動的言語であるため、これを静的言語であるJavaには適用できないという問題点がある。 However, since Ruby on Rails is a dynamic language, there is a problem that it cannot be applied to Java, which is a static language.
Javaで動的ファインダー機能を実現するためには、メソッドやSQL文を自動生成し、また仕様変更に応じて動的に再生成しなければならないという問題点がある。 In order to realize the dynamic finder function in Java, there is a problem that methods and SQL statements must be automatically generated, and dynamically regenerated according to specification changes.
また、特許文献1に記載された技術は、データアクセスクラスおよびそれに関連するデータアクセスのSQL文を生成するものではない。
Further, the technique described in
本発明の目的は、上述した課題を解決するファイル生成システムおよびファイル生成方法を提供することである。 An object of the present invention is to provide a file generation system and a file generation method that solve the above-described problems.
本発明のファイル生成システムは、
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、SQL文定義ファイル生成装置とから構成されたファイル生成システムにおいて、
前記テーブル設計書読込装置は、テーブルがあらかじめ定義されたテーブル設計書を読み込み、
前記ソース生成制御装置は、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記SQL文定義ファイル生成装置とを制御し、
前記SQL文定義ファイル生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーSQL文と、INSERT、UPDATEおよびDELETEのSQL文とが含まれたSQL文定義ファイルを生成し、
前記データクラス生成装置は、データアクセスクラス及び前記SQL文定義ファイルで使用される、O/Rマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成し、
前記データアクセスクラス生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をSQL文に当てはめて、該SQL文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成し、
前記SQL文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Javaの前記O/Rマッピング上で動作させることを特徴とする。
The file generation system of the present invention includes:
In a file generation system composed of a table design document reading device, a source generation control device, a data class generation device, a data access class generation device, and an SQL statement definition file generation device,
The table design document reading device reads a table design document in which a table is predefined,
The source generation control device controls the data class generation device, the data access class generation device, and the SQL statement definition file generation device based on a combination of columns of the table of the table design document;
The SQL statement definition file generation device generates an SQL statement definition file including a dynamic finder SQL statement generated based on the combination of the columns and an SQL statement of INSERT, UPDATE, and DELETE,
The data class generation device generates a data class file that is a data class file that is used in the data access class and the SQL statement definition file, and that is a class representing a correspondence with a table in O / R mapping.
The data access class generation device is a class that includes the dynamic finder method name generated based on the combination of the columns, applies the value of the data class to an SQL statement, and operates the SQL statement. Generate a data access class file to be a data access class file,
The SQL statement definition file, the data class file, and the data access class file are operated on the O / R mapping of Java.
また、本発明のファイル生成方法は、
テーブル設計書読込装置と、ソース生成制御装置と、データクラス生成装置と、データアクセスクラス生成装置と、SQL文定義ファイル生成装置とから構成されたファイル生成システムにおけるファイル生成方法であって、
前記テーブル設計書読込装置が、テーブルがあらかじめ定義されたテーブル設計書を読み込む処理と、
前記ソース生成制御装置が、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記SQL文定義ファイル生成装置とを制御する処理と、
前記SQL文定義ファイル生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーSQL文と、INSERT、UPDATEおよびDELETEのSQL文とが含まれたSQL文定義ファイルを生成する処理と、
前記データクラス生成装置が、データアクセスクラス及び前記SQL文定義ファイルで使用される、O/Rマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成する処理と、
前記データアクセスクラス生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をSQL文に当てはめて、該SQL文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成する処理と、
前記SQL文定義ファイルと、前記データクラスファイルと、前記データアクセスクラスファイルとを、Javaの前記O/Rマッピング上で動作させる処理とを有する。
Further, the file generation method of the present invention includes:
A file generation method in a file generation system comprising a table design document reading device, a source generation control device, a data class generation device, a data access class generation device, and an SQL statement definition file generation device,
The table design document reading device reads a table design document in which a table is defined in advance;
The source generation control device controls the data class generation device, the data access class generation device, and the SQL statement definition file generation device based on a combination of columns in the table of the table design document;
A process in which the SQL statement definition file generating device generates an SQL statement definition file including a dynamic finder SQL statement generated based on the combination of the columns and an INSERT, UPDATE, and DELETE SQL statement;
The data class generation device generates a data class file that is a data class file that is a class representing a correspondence with a table in the O / R mapping used in the data access class and the SQL statement definition file;
The data access class generation device is a class that includes the dynamic finder method name generated based on the combination of the columns, applies the value of the data class to an SQL statement, and operates the SQL statement Processing to generate a data access class file to be a data access class file;
And processing for operating the SQL statement definition file, the data class file, and the data access class file on the O / R mapping of Java.
以上説明したように、本発明においては、O/Rマッピング分野においてJavaの生産性を向上させることができる。 As described above, in the present invention, Java productivity can be improved in the field of O / R mapping.
以下に、本発明の実施の形態について図面を参照して説明する。 Embodiments of the present invention will be described below with reference to the drawings.
図1は、本発明のファイル生成システムの実施の一形態を示す図である。 FIG. 1 is a diagram showing an embodiment of a file generation system of the present invention.
本形態は図1に示すように、テーブル設計書読込装置101と、ソース生成制御装置102と、データクラス生成装置103と、データアクセスクラス生成装置104と、SQL文定義ファイル生成装置105とから構成されている。
As shown in FIG. 1, this embodiment includes a table design
テーブル設計書読込装置101は、テーブルがあらかじめ定義された設計書であるテーブル設計書100を読み込む。
The table design
図2は、図1に示したテーブル設計書100の一例を示す図である。
FIG. 2 is a diagram showing an example of the
図1に示したテーブル設計書100は図2に示すように、テーブル名「T_TEST」、論理名、物理名、型、長さ、精度、必須、主キーおよび定義内容が項番(No)ごとにそれぞれ対応付けられたものとなっている。
As shown in FIG. 2, the
論理名は、「ユーザID」、「ユーザ名」や「電話番号(自宅)」等である。 The logical name is “user ID”, “user name”, “telephone number (home)”, or the like.
また、物理名は、論理名それぞれに対応した「USER_ID」、「USER_NAME」や「TEL_JITAKU」等である。 The physical name is “USER_ID”, “USER_NAME”, “TEL_JITAKU”, or the like corresponding to each logical name.
また、型は、論理名および物理名に対応した「NUMBER」、「VARCHAR2」や「CHAR」等である。 The type is “NUMBER”, “VARCHAR2”, “CHAR” or the like corresponding to the logical name and the physical name.
また、長さ、精度、必須、主キーおよび定義内容についても、あらかじめ設定されている。 The length, accuracy, essentiality, primary key, and definition contents are also set in advance.
また、テーブル設計書読込装置101は、読み込んだテーブル設計書100からテーブル名と各カラムの情報を取得する。また、テーブル設計書読込装置101は、取得した各カラムの情報をテーブル名と対応付けて格納(記憶)する。
Further, the table design
図3は、図1に示したテーブル設計書読込装置101が格納した各カラムの情報の一例である。
FIG. 3 is an example of information on each column stored by the table design
図1に示したテーブル設計書読込装置101が格納した各カラムの情報は図3に示すように、変数名と、型と、その説明とが対応付けられて「EntityMappingRow」として格納されている。この「説明」の部分が、設計書の各項目に相当する。これは、EntityMappingRowを基礎としてList<EntityMappingRow>に格納される。
As shown in FIG. 3, the information of each column stored in the table design
ソース生成制御装置102は、テーブル設計書100のテーブルのカラムの組み合わせに基づいて、データクラス生成装置103と、データアクセスクラス生成装置104と、SQL文定義ファイル生成装置105とを制御する。
The source
図4は、図1に示したソース生成制御装置102の内部構成の一例を示す図である。
FIG. 4 is a diagram illustrating an example of an internal configuration of the source
図1に示したソース生成制御装置102には図4に示すように、抽出部1021と、メソッド名生成部1022と、SQL文生成部1023と、起動部1024とが設けられている。
As shown in FIG. 4, the source
抽出部1021は、テーブル設計書読込装置101が取得した全てのカラムからカラムの組み合わせを抽出する。また、抽出部1021は、テーブル設計書読込装置101が取得した全てのカラムから組み合わせることができるカラムの組み合わせ全てを抽出する。
The
メソッド名生成部1022は、抽出部1021が抽出した組み合わせの各カラムのカラム名に基づいて、動的ファインダーメソッド名を生成する。また、メソッド名生成部1022は、抽出部1021が抽出した組み合わせの各カラムのカラム名を論理積であるANDで繋げたメソッド名を動的ファインダーメソッド名として生成する。または、メソッド名生成部1022は、抽出部1021が抽出した組み合わせの各カラムのカラム名を論理和であるORで繋げたメソッド名を動的ファインダーメソッド名として生成する。
The method
SQL文生成部1023は、抽出部1021が抽出した組み合わせの各カラムに基づいて、動的ファインダーSQL文を生成する。また、SQL文生成部1023は、抽出部1021が抽出した組み合わせの各カラムを論理積であるANDで繋げたSQLの条件文を動的ファインダーSQL文として生成する。または、SQL文生成部1023は、抽出部1021が抽出した組み合わせの各カラムを論理和であるORで繋げたSQLの条件文を動的ファインダーSQL文として生成する。
The SQL
起動部1024は、データクラス生成装置103と、データアクセスクラス生成装置104と、SQL文定義ファイル生成装置105とを起動する。
The
SQL文定義ファイル生成装置105は、カラムの組み合わせに基づいて生成された動的ファインダーSQL文と、INSERT、UPDATEおよびDELETEのSQL文とが含まれたSQL文定義ファイル108を生成する。
The SQL statement definition
データクラス生成装置103は、データアクセスクラス及びSQL文定義ファイル108で使用される、O/Rマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイル106を生成する。
The data
データアクセスクラス生成装置104は、カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、データクラスの値をSQL文に当てはめて、SQL文を動作させるクラスであるデータアクセスクラスのファイルとなるデータアクセスクラスファイル107を生成する。
The data access
また、図1に示した形態で生成されたSQL文定義ファイル108と、データクラスファイル106と、データアクセスクラスファイル107とを、JavaのO/Rマッピング上で動作させる。
Further, the SQL
以下に、本形態におけるファイル生成方法のうち、図4に示した抽出部1021における処理について説明する。
Below, the process in the
図5は、本形態におけるファイル生成方法のうち、図4に示した抽出部1021における処理を説明するためのフローチャートである。
FIG. 5 is a flowchart for explaining processing in the
まず、全カラム数である変数nと、その中から抽出するカラム数である変数mとが初期化される(ステップS1)。mの値の取り得る範囲は、(1≦m≦全カラム数)であり、ステップS1では「1」に初期化される。 First, a variable n that is the total number of columns and a variable m that is the number of columns to be extracted from the number are initialized (step S1). The possible range of the value of m is (1 ≦ m ≦ total number of columns), and is initialized to “1” in step S1.
その後、抽出部1021にて、異なるn個のものから異なるm個のものが抽出される。
Thereafter, the
抽出後、mが全カラム数以下であるかどうかが判定される(ステップS2)。 After extraction, it is determined whether m is equal to or less than the total number of columns (step S2).
mが全カラム数以下ではないと判定された場合、処理は終了する。 If it is determined that m is not less than the total number of columns, the process ends.
一方、mが全カラム数以下であると判定された場合、採用した組み合わせ数が組み合わせの総数以下の数値であるかどうかが判定される(ステップS3)。この「採用した組み合わせ」については、後述する。 On the other hand, when it is determined that m is equal to or less than the total number of columns, it is determined whether or not the number of combinations employed is a value equal to or less than the total number of combinations (step S3). This “adopted combination” will be described later.
ここで、異なるn個のものから異なるm個のものを抽出する組み合わせの総数は、組み合わせの総数の計算式で表わされる。組み合わせの総数は、上述のように機械的に求められるが、具体的な組み合わせは機械的に求めることができない。 Here, the total number of combinations for extracting different m items from different n items is expressed by a calculation formula for the total number of combinations. Although the total number of combinations is mechanically determined as described above, a specific combination cannot be mechanically determined.
そこで、採用した組み合わせ数が組み合わせの総数以下の数値であると判定された場合、異なるn個のものから異なるm個がランダムに抽出される(ステップS4)。この組み合わせは、組み合わせの総数とは違い、計算式により求めることができないため、ランダムに抽出される。 Therefore, when it is determined that the number of combinations adopted is a numerical value equal to or less than the total number of combinations, m different ones are randomly extracted from n different ones (step S4). Unlike the total number of combinations, this combination cannot be obtained by a calculation formula and is therefore extracted at random.
すると、抽出したものと同じ組み合わせがすでに存在するかどうかが判定される(ステップS5)。 Then, it is determined whether or not the same combination as the extracted one already exists (step S5).
ステップS5にて、抽出したものと同じ組み合わせが存在しないと判定された場合、その組み合わせが採用される(ステップS6)。そして、ステップS3の処理が再度行われる。この採用された組み合わせが、上述した「採用した組み合わせ」となる。 If it is determined in step S5 that the same combination as the extracted one does not exist, that combination is adopted (step S6). Then, the process of step S3 is performed again. This adopted combination is the “adopted combination” described above.
一方、ステップS5にて、抽出したものと同じ組み合わせが存在すると判定された場合、その組み合わせが破棄され(ステップS8)、ステップS3の処理が再度行われる。 On the other hand, when it is determined in step S5 that the same combination as the extracted one exists, the combination is discarded (step S8), and the process of step S3 is performed again.
また、ステップS3にて、採用した組み合わせ数が組み合わせの総数以下の数値ではないと判定された場合は、mの値がインクリメントされ(ステップS7)、ステップS2の処理が再度行われる。 If it is determined in step S3 that the number of combinations adopted is not a numerical value equal to or less than the total number of combinations, the value of m is incremented (step S7), and the process of step S2 is performed again.
このように、同じ組み合わせは破棄し、これまでと異なる組み合わせは採用すると言うことを、組み合わせの総数になるまで繰り返すアルゴリズムを実装する。 In this way, an algorithm is implemented that discards the same combination and adopts a different combination until the total number of combinations is reached.
上述したように抽出されたカラムの組み合わせに基づいて、動的ファインダーメソッド名および動的ファインダーSQL文を作成する。 Based on the combination of columns extracted as described above, a dynamic finder method name and a dynamic finder SQL statement are created.
図6は、図4に示したメソッド名生成部1022において、各カラム名をANDで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
FIG. 6 is a diagram illustrating an example of a program that generates, as the dynamic finder method name, a method name in which the column names are connected by AND in the method
図6に示すように、6011のロジックにより6012で表わされる各カラム名をANDで繋げたメソッド名が生成される。 As shown in FIG. 6, a method name in which each column name represented by 6012 is connected by AND by the logic 6011 is generated.
図7は、図4に示したメソッド名生成部1022において、各カラム名をORで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
FIG. 7 is a diagram illustrating an example of a program for generating, as the dynamic finder method name, a method name in which the column names are connected by OR in the method
図7に示すように、6021のロジックにより6022で表わされる各カラム名をORで繋げたメソッド名が生成される。
As shown in FIG. 7, a method name in which the column names represented by 6022 are connected by OR by the
図8は、図4に示したメソッド名生成部1022において、「各カラム名+[Like/Ge]」をANDで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
FIG. 8 is a diagram illustrating an example of a program that generates, as the dynamic finder method name, a method name in which “each column name + [Like / Ge]” is connected by AND in the method
図8に示すように、6031のロジックにより6032で表わされる「各カラム名+[Like/Ge]」をANDで繋げたメソッド名が生成される。数値型には「Ge」が付け加えられ、その他には「Like」が付け加えられるようにしている。 As illustrated in FIG. 8, a method name in which “each column name + [Like / Ge]” represented by 6032 is connected by AND is generated by the logic of 6031. “Ge” is added to the numerical type, and “Like” is added to the others.
図9は、図4に示したメソッド名生成部1022において、「各カラム名+[Like/Ge]」をORで繋げたメソッド名を動的ファインダーメソッド名として生成するプログラムの一例を示す図である。
FIG. 9 is a diagram illustrating an example of a program that generates, as the dynamic finder method name, a method name in which “each column name + [Like / Ge]” is connected by OR in the method
図9に示すように、6041のロジックにより6042で表わされる「各カラム名+[Like/Ge]」をORで繋げたメソッド名が生成される。数値型には「Ge」が付け加えられ、その他には「Like」が付け加えられるようにしている。 As shown in FIG. 9, a method name in which “each column name + [Like / Ge]” represented by 6042 is connected by OR by the logic of 6041 is generated. “Ge” is added to the numerical type, and “Like” is added to the others.
図10は、図4に示したSQL文生成部1023において、各カラムをANDで繋げたSQLの条件文を動的ファインダーSQL文として生成するプログラムの一例を示す図である。
FIG. 10 is a diagram illustrating an example of a program that generates, as the dynamic finder SQL statement, a SQL conditional statement in which the columns are connected by AND in the SQL
図10に示すように、7011のロジックにより7012で表わされる各カラムをANDで繋げたSQLの条件文が生成される。
As shown in FIG. 10, an SQL conditional statement in which the
図11は、図4に示したSQL文生成部1023において、各カラムをORで繋げたSQLの条件文を動的ファインダーSQL文として生成するプログラムの一例を示す図である。
FIG. 11 is a diagram illustrating an example of a program that generates, as the dynamic finder SQL statement, a SQL conditional statement in which the columns are connected by OR in the SQL
図11に示すように、7021のロジックにより7022で表わされる各カラムをORで繋げたSQLの条件文が生成される。
As shown in FIG. 11, an SQL conditional statement in which the
図12は、図4に示したSQL文生成部1023において、「各カラム+[LIKE/>=]」をANDで繋げたSQLの条件文を動的ファインダーSQL文として生成するプログラムの一例を示す図である。
FIG. 12 shows an example of a program for generating, as a dynamic finder SQL statement, a SQL conditional statement in which “each column + [LIKE /> =]” is connected by AND in the SQL
図12に示すように、8011のロジックにより8012で表わされる「各カラム+[LIKE/>=]」をANDで繋げたSQLの条件文が生成される。数値型には「>=」が付け加えられ、その他には「LIKE」が付け加えられるようにしている。 As shown in FIG. 12, an SQL conditional statement in which “each column + [LIKE /> =]” represented by 8012 is connected by AND is generated by the logic of 8011. “> =” Is added to the numeric type, and “LIKE” is added to the others.
図13は、図4に示したSQL文生成部1023において、「各カラム+[LIKE/>=]」をORで繋げたSQLの条件文を動的ファインダーSQL文として生成するプログラムの一例を示す図である。
FIG. 13 shows an example of a program for generating, as a dynamic finder SQL sentence, a SQL conditional sentence in which “each column + [LIKE /> =]” is connected by OR in the SQL
図13に示すように、8021のロジックにより8022で表わされる「各カラム+[LIKE/>=]」をORで繋げたSQLの条件文が生成される。数値型には「>=」が付け加えられ、その他には「LIKE」が付け加えられるようにしている。 As shown in FIG. 13, an SQL conditional statement in which “each column + [LIKE /> =]” represented by 8022 is connected by OR by the logic of 8021 is generated. “> =” Is added to the numeric type, and “LIKE” is added to the others.
以上のように動的ファインダーメソッド及び動的ファインダーSQL文が生成される。生成されたデータクラス及びデータアクセスクラス、SQL文定義ファイルは、iBATIS O/Rマッピング上で動作し、動的ファインダー機能を実現する。 As described above, the dynamic finder method and the dynamic finder SQL statement are generated. The generated data class, data access class, and SQL statement definition file operate on the iBATIS O / R mapping to realize a dynamic finder function.
このため、これを利用するクラス側で、アクセスするテーブルの全カラムの組み合わせの条件(ANDで繋げた条件やORで繋げた条件)を使用することができるようになる。 For this reason, on the class side using this, it is possible to use a combination condition (a condition connected by AND or a condition connected by OR) of all the columns of the table to be accessed.
本発明は、JavaのO/Rマッピングのフレームワーク上で動作が可能である。例えば、S2DaoのO/Rマッピングに対しては、本発明が生成している動的ファインダーメソッド及び動的ファインダーSQL文が適合している。 The present invention can operate on the Java O / R mapping framework. For example, the dynamic finder method and the dynamic finder SQL statement generated by the present invention are suitable for S2Dao O / R mapping.
このように本発明は、O/Rマッピングの分野に関し、動的ファインダーに関するSQL文を実行するシステムに関するものである。 As described above, the present invention relates to the field of O / R mapping, and relates to a system for executing an SQL statement related to a dynamic finder.
以上説明したように本発明では、全カラムの組み合わせをANDで繋げた条件やORで繋げた条件を生成する。また、部分一致を考慮して[LIKE]や[>=]を利用して、ANDで繋げた条件やORで繋げた条件を生成する。これにより、各テーブルへの基本的なアクセスパターンがプログラム実装開始時点で利用できる。また、各テーブルの内容が変更された場合も、再生成を行なうことで、動的にその時のテーブル仕様に対応したファインダーメソッドが利用できる。そのため、データアクセスの開発工数を削減することができる。一般的にRuby on RailsはJavaよりも生産性が高いと言われているが、それはActiveRecordの動的ファインダー機能による所が大きい。本発明ではJavaでActiveRecordが備えている動的ファインダーと同等の機能を実現し、またその問題点を解決することで、Java の生産性を向上させる効果をもたらす。 As described above, in the present invention, a condition in which combinations of all columns are connected by AND or a condition in which OR is connected is generated. In addition, in consideration of partial matching, [LIKE] and [> =] are used to generate conditions connected by AND and conditions connected by OR. Thereby, a basic access pattern to each table can be used at the start of program implementation. Also, when the contents of each table are changed, the viewfinder method corresponding to the table specification at that time can be used dynamically by performing regeneration. Therefore, it is possible to reduce the development man-hour for data access. Ruby on Rails is generally said to be more productive than Java, but this is largely due to the dynamic finder function of ActiveRecord. In the present invention, the same function as the dynamic finder provided by ActiveRecord in Java is realized, and the problem is solved, thereby bringing about the effect of improving Java productivity.
100 テーブル設計書
101 テーブル設計書読込装置
102 ソース生成制御装置
103 データクラス生成装置
104 データアクセスクラス生成装置
105 SQL文定義ファイル生成装置
106 データクラスファイル
107 データアクセスクラスファイル
108 SQL文定義ファイル
1021 抽出部
1022 メソッド名生成部
1023 SQL文生成部
1024 起動部
DESCRIPTION OF
Claims (8)
前記テーブル設計書読込装置は、テーブルがあらかじめ定義されたテーブル設計書を読み込み、
前記ソース生成制御装置は、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記SQL文定義ファイル生成装置とを制御し、
前記SQL文定義ファイル生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーSQL文と、INSERT、UPDATEおよびDELETEのSQL文とが含まれたSQL文定義ファイルを生成し、
前記データクラス生成装置は、データアクセスクラス及び前記SQL文定義ファイルで使用される、O/Rマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成し、
前記データアクセスクラス生成装置は、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をSQL文に当てはめて、該SQL文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成することを特徴とするファイル生成システム。 In a file generation system composed of a table design document reading device, a source generation control device, a data class generation device, a data access class generation device, and an SQL statement definition file generation device,
The table design document reading device reads a table design document in which a table is predefined,
The source generation control device controls the data class generation device, the data access class generation device, and the SQL statement definition file generation device based on a combination of columns of the table of the table design document;
The SQL statement definition file generation device generates an SQL statement definition file including a dynamic finder SQL statement generated based on the combination of the columns and an SQL statement of INSERT, UPDATE, and DELETE,
The data class generation device generates a data class file that is a data class file that is used in the data access class and the SQL statement definition file, and is a class representing a correspondence with a table in O / R mapping
The data access class generation device is a class that includes the dynamic finder method name generated based on the combination of the columns, applies the value of the data class to an SQL statement, and operates the SQL statement. A file generation system for generating a data access class file to be a data access class file.
前記テーブル設計書読込装置は、前記テーブル設計書からテーブル名とカラムの情報とを取得し、
前記ソース生成制御装置は、
前記テーブル設計書読込装置が取得した全てのカラムからカラムの組み合わせを抽出する抽出部と、
前記抽出部が抽出した組み合わせの各カラムのカラム名に基づいて、動的ファインダーメソッド名を生成するメソッド名生成部と、
前記抽出部が抽出した組み合わせの各カラムに基づいて、前記動的ファインダーSQL文を生成するSQL文生成部と、
前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記SQL文定義ファイル生成装置とを起動する起動部とを有することを特徴とするファイル生成システム。 The file generation system according to claim 1,
The table design document reading device acquires a table name and column information from the table design document,
The source generation control device includes:
An extraction unit for extracting a combination of columns from all the columns acquired by the table design document reading device;
A method name generation unit that generates a dynamic finder method name based on the column name of each column of the combination extracted by the extraction unit;
An SQL statement generation unit that generates the dynamic finder SQL statement based on each column of the combination extracted by the extraction unit;
A file generation system comprising: an activation unit that activates the data class generation device, the data access class generation device, and the SQL statement definition file generation device.
前記メソッド名生成部は、前記抽出部が抽出した組み合わせの各カラムのカラム名をANDで繋げたメソッド名を前記動的ファインダーメソッド名として生成することを特徴とするファイル生成システム。 The file generation system according to claim 2,
The file generation system, wherein the method name generation unit generates, as the dynamic finder method name, a method name obtained by connecting column names of combinations of columns extracted by the extraction unit by AND.
前記メソッド名生成部は、前記抽出部が抽出した組み合わせの各カラムのカラム名をORで繋げたメソッド名を前記動的ファインダーメソッド名として生成することを特徴とするファイル生成システム。 The file generation system according to claim 2,
The file generation system, wherein the method name generation unit generates, as the dynamic finder method name, a method name obtained by connecting the column names of the combinations of columns extracted by the extraction unit with OR.
前記SQL文生成部は、前記抽出部が抽出した組み合わせの各カラムをANDで繋げたSQLの条件文を前記動的ファインダーSQL文として生成することを特徴とするファイル生成システム。 The file generation system according to claim 2,
The SQL statement generation unit generates an SQL conditional statement in which the combination columns extracted by the extraction unit are connected by AND as the dynamic finder SQL statement.
前記SQL文生成部は、前記抽出部が抽出した組み合わせの各カラムをORで繋げたSQLの条件文を前記動的ファインダーSQL文として生成することを特徴とするファイル生成システム。 The file generation system according to claim 2,
The SQL statement generation unit generates, as the dynamic finder SQL statement, an SQL conditional statement in which each column of the combination extracted by the extraction unit is connected by OR.
前記抽出部は、前記テーブル設計書読込装置が取得した全てのカラムから組み合わせることができるカラムの組み合わせ全てを抽出することを特徴とするファイル生成システム。 The file generation system according to claim 2,
The extraction unit extracts all combinations of columns that can be combined from all columns acquired by the table design document reading device.
前記テーブル設計書読込装置が、テーブルがあらかじめ定義されたテーブル設計書を読み込む処理と、
前記ソース生成制御装置が、前記テーブル設計書のテーブルのカラムの組み合わせに基づいて、前記データクラス生成装置と、前記データアクセスクラス生成装置と、前記SQL文定義ファイル生成装置とを制御する処理と、
前記SQL文定義ファイル生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーSQL文と、INSERT、UPDATEおよびDELETEのSQL文とが含まれたSQL文定義ファイルを生成する処理と、
前記データクラス生成装置が、データアクセスクラス及び前記SQL文定義ファイルで使用される、O/Rマッピングにおけるテーブルとの対応を表すクラスであるデータクラスのファイルとなるデータクラスファイルを生成する処理と、
前記データアクセスクラス生成装置が、前記カラムの組み合わせに基づいて生成された動的ファインダーメソッド名が含まれた、前記データクラスの値をSQL文に当てはめて、該SQL文を動作させるクラスである前記データアクセスクラスのファイルとなるデータアクセスクラスファイルを生成する処理とを有するファイル生成方法。 A file generation method in a file generation system comprising a table design document reading device, a source generation control device, a data class generation device, a data access class generation device, and an SQL statement definition file generation device,
The table design document reading device reads a table design document in which a table is defined in advance;
The source generation control device controls the data class generation device, the data access class generation device, and the SQL statement definition file generation device based on a combination of columns in the table of the table design document;
A process in which the SQL statement definition file generating device generates an SQL statement definition file including a dynamic finder SQL statement generated based on the combination of the columns and an INSERT, UPDATE, and DELETE SQL statement;
The data class generation device generates a data class file that is a data class file that is a class representing a correspondence with a table in the O / R mapping used in the data access class and the SQL statement definition file;
The data access class generation device is a class that includes the dynamic finder method name generated based on the combination of the columns, applies the value of the data class to an SQL statement, and operates the SQL statement A file generation method comprising : generating a data access class file to be a data access class file.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010013048A JP5163662B2 (en) | 2010-01-25 | 2010-01-25 | File generation system and file generation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010013048A JP5163662B2 (en) | 2010-01-25 | 2010-01-25 | File generation system and file generation method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011150632A JP2011150632A (en) | 2011-08-04 |
JP5163662B2 true JP5163662B2 (en) | 2013-03-13 |
Family
ID=44537530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010013048A Expired - Fee Related JP5163662B2 (en) | 2010-01-25 | 2010-01-25 | File generation system and file generation method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5163662B2 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001518670A (en) * | 1997-09-26 | 2001-10-16 | オントス,インコーポレイテッド | Objective model mapping and runtime engine for using a relational database with object-oriented software |
JP3892825B2 (en) * | 2003-05-23 | 2007-03-14 | 株式会社東芝 | Database search support system and database search support method |
JP2006268125A (en) * | 2005-03-22 | 2006-10-05 | Fuji Electric Systems Co Ltd | Application server and its program |
-
2010
- 2010-01-25 JP JP2010013048A patent/JP5163662B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011150632A (en) | 2011-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dumas et al. | Fast detection of exact clones in business process model repositories | |
Wylot et al. | Tripleprov: Efficient processing of lineage queries in a native rdf store | |
CN112560100B (en) | Data desensitizing method and device, computer readable storage medium and electronic equipment | |
US20070168380A1 (en) | System and method for storing text annotations with associated type information in a structured data store | |
US20130054650A1 (en) | Automatic detection of columns to be obfuscated in database schemas | |
US8667010B2 (en) | Database table partitioning allowing overlaps used in full text query | |
CN108984155A (en) | Flow chart of data processing setting method and device | |
US20100293161A1 (en) | Automatically avoiding unconstrained cartesian product joins | |
CN109710220B (en) | Relational database query method, relational database query device, relational database query equipment and storage medium | |
Wylot et al. | Storing, tracking, and querying provenance in linked data | |
WO2021253641A1 (en) | Shading language translation method | |
CN104933162B (en) | A kind of conversion method of CSV data from metadata mark to RDF data | |
US20090187552A1 (en) | System and Methods for Generating Data Analysis Queries from Modeling Constructs | |
US9424310B2 (en) | System and method for executing queries | |
US10055450B1 (en) | Efficient management of temporal knowledge | |
CN112948419A (en) | Query statement processing method and device | |
CN110309118A (en) | A kind of design method of depth network data excavation robot | |
US20230153455A1 (en) | Query-based database redaction | |
JP5488792B2 (en) | Database operation device, database operation method, and program | |
JP5163662B2 (en) | File generation system and file generation method | |
JP6287506B2 (en) | Database access control program, database access control method, and information processing apparatus | |
CN107622070A (en) | A kind of data base management method and device | |
Del Gratta et al. | The LRE Map disclosed. | |
Unbehauen et al. | SPARQL update queries over R2RML mapped data sources | |
CN113312373A (en) | Method and equipment for analyzing data structured query statement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110517 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120919 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121029 |
|
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: 20121120 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121203 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5163662 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |