- - PR -
Javaオブジェクト、SQL文の相互変換
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-28 21:22
以下のことをやりたいと考えています。
1)とあるツールにて検索条件を設定 2)検索条件をJavaオブジェクトに変換 3)JavaオブジェクトからXMLを生成し、XMLファイルを保存 4)XMLファイルを読み込みJavaオブジェクトを構築 5)JavaオブジェクトからSQL文を構築 出来るだけSQL文の構造を保ったままJavaオブジェクトを構築したいと思っています。 制限はあるにしろ、検索条件をJavaオブジェクトで保持するという仕様は多々あるように思えます。 どなたか、そのようなAPIをご存じないでしょうか? 構文解析からやるのは流石にちょっと辛いので・・・ | ||||
|
投稿日時: 2005-10-28 22:31
3と4のXML<-->Javaに関しては、JAXB等のバインディング技術もしくは、
java.beans.XMLDecoder/XMLEncoderというAPIが使用可能ではないでしょうか。 5に関しては、汎用的なSQLのシンタックスツリーを 構築するAPIが欲しいとの事でしょうか? 何を行いたいのかよくわかりませんでした。 | ||||
|
投稿日時: 2005-10-28 22:45
るぱんです。
Hibernateみたいな ORMapperの事をさしているのでしょうか・・・? | ||||
|
投稿日時: 2005-10-28 23:51
すんません、説明不足ですね。
やりたいのは、↓こんな感じです。 GUI<--> Java <--> SQL文 Java <--> XML JavaのところはDOMのような構造化されたオブジェクトが入ると考えてます。 SQLの構文に従ったDOMって感じですね。 whereってタグの下には、カラム名と演算子と比較演算子と論理演算子と・・・を作ることができて〜という感じです。 もちろん、SQLの構文に合わないものは作れない。 構文解析しながら、シコシコ作るしかないんでしょうか? | ||||
|
投稿日時: 2005-10-29 00:20
何となく要件はわかりましたが、
対応すべきRDBそれぞれに対したSQLの構文解析ルーチンを作成して、 シンタックスツリーの作成機能を実装する必要がありそうですね。 JavaCCやSableCCやNotavaCC等のコンパイラコンパイラを使用して、 構文定義ファイルから構文解析機を作成すれば、 そんなに難しくはないかなと思います。 って言っても、実際には難しいのですが、 有名なコンパイラコンパイラでは、 SQL等の構文定義ファイルが存在していますので、 それをベースに改造するのが早いし便利だと思います。 何だかんだで一番大変なのは、 各RDB用の構文ルールを解析する事ではないでしょうか。 | ||||
|
投稿日時: 2005-10-29 02:07
各RDB用のSQL文の構築は、Java<-->SQL文の部分で吸収しようと考えてます。 元から完全なSQL文の構築は無理だと思ってますので、制限を設けて極々標準的な構文を構築できればと思ってます。 少なくとも副問い合わせは、不要です。 条件部分が、 A > 10 and B > 5 とかだと楽なんですが、 (A - B) > (C + D…) みたいなのになると、もう訳わかりません。 言語解析の経験なんて皆無ですから… | ||||
|
投稿日時: 2005-10-29 09:57
データモデリングツールやORマッピングフレームワークでは、
SQL<-->Javaの相互変換をサポートしているのは少ないですね。 私も以前データベース管理システムを仕事で作った事がありますが、 SQL直接入力モードがありました。 ただし、SQL直接入力の場合は解析処理を一切行わなわず、 SQL直接入力モードとSQLオブジェクト構築モードを完全に分けていました。 ちなみに、C-JDBCというオープンソースの異種RDBMS間のクラスタを行うものがあります。 例えばORACLEとPostgreSQLに対して同じSQLを実行することができます。 同じSQLが実行できる代わりに、各RDBMS固有の命令・関数は使用できなくなっています。 このSQLエンジンのソースを解析すれば、実現しやすくなるかもしれませんね。 |
1