0

DDLやDMLなどを実行するためのJavaコードを実行するのは面倒で、多くの入力が必要だと考えていました。それで、データベースに次の機能がある/できるかどうかを考えていました-テキストファイルでスクリプトを取得し、スクリプト全体を実行します。

このようなものがあれば、通常の簡単な方法で SQL クエリをテキスト ファイルに入力できます。Java コードは、このテキスト ファイルを DB に送信し、DB は、誰かがスクリプトを管理 GUI に入力したかのように実行します。

これは可能ですか?このようなシステムの欠点は何でしょうか?

4

4 に答える 4

4

私が知っているほとんどすべてのデータベースには、そのような機能があります (タグで言及されている MySQL を含む)。コマンド ライン クライアントから次のようなことを行うだけです (この例は MySQL の場合)。

mysql -h hostname -u user < sql_script.sql

ファイルを渡すためにプログラミング言語を使用する中間層はありません。

于 2012-07-31T21:44:38.070 に答える
3

私はあなたのDDLのためにそれを選ぶと思います。私は常にテーブル/インデックス/制約の作成を SQL スクリプトにドロップし、それを実行してデータベースをセットアップします。

ただし、DML の場合、他の投稿者が言ったように、ユーザー入力に基づいて (通常は) これらのクエリを頻繁に実行します。ユーザーがシステムで何らかのオブジェクトを作成すると、1 つ以上の挿入/更新でそれを保存することになります。これらのステートメントのパラメーターは、ユーザーがシステムに入力した値になります。これらを直接実行するために Java の機能を使用すると、より保守しやすく、理解しやすくなります。SQL ファイル内のトークンをパラメーターに置き換えてデータベースに渡そうとすると、すぐに面倒になります。

于 2012-07-31T21:55:10.607 に答える
1

あなたが提案するのは、基本的にRDBMSでストアドプロシージャを呼び出すようなものです。

欠点は、ドメインロジックが永続レイヤーに常駐するようになったことです。これは、いくつかの理由で悪い (可能性がある) ことです。

主な問題の 1 つは次のとおりです。コードのメンテナンス: プログラマーはメンテナンスの観点から悪夢であり、プログラマーは domani ロジックと SQL ステートメントの両方のスキルを必要とします。チームの規模によっては、これが大きな懸念事項になる場合があります。一般に、懸念事項の分離ルールを遵守する

于 2012-07-31T21:44:24.940 に答える
1

パラメーターとして送信される値のほとんどは実行時にのみ認識されるため、Java コードのステートメントが必要です。値は GUI から取得され、各クエリ間で実行されるすべてのビジネス コードから取得されます。それ以外の場合は、はい、必要なものが存在します。それらはストアド プロシージャと呼ばれます。

于 2012-07-31T21:45:19.947 に答える