11

MySQLからJavaコードを呼び出す方法について説明している2008年の記事を見つけました。このプロセスにはMySQLの実験的なブランチでの作業が含まれていたため、多くの警告と免責事項がありました。

私が考えているプロジェクトの場合、OracleのJavaストアドプロシージャと同様に、MySQL内のJavaライブラリにアクセスできると非常に便利です。この機能はMySQLの標準機能として存在しますか?そうでない場合、どのオープンソースRDBMSがOracleのJavaストアドプロシージャに似たものをサポートしますか?

4

5 に答える 5

6

PostgreSQLはプラグイン可能なプロシージャ言語をサポートしており、言語としてPL/Javaを使用してPostgreSQLを拡張するプロジェクトが存在します。

RDBMSにあまり多くのコードを入れることはお勧めしません。アプリケーション層でコードを開発、テスト、およびデバッグするためのツールは、RDBMSでのコード用のツールよりも優れています。

また、多くの開発者は、RDBMS内のコードがトランザクション分離に従う必要があることを理解していません。彼らはトリガーなどからメールを送信しようとします。副作用のあるコードはアプリケーション層にあるべきだと思うので、幻の効果を作成しないでください(たとえば、変更がロールバックされた場合でも、電子メールでデータベースの変更が通知される場合があります)。

于 2010-01-09T19:41:08.227 に答える
2

HSQLDBを使用できる場合は、SQLから直接Javaメソッドを呼び出すことができます:http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N1240C

于 2010-01-09T20:17:56.110 に答える
1

私はビルに完全に同意しますが、ビジネスルールがデータベースに保存されている(処理されていない)ことを想像できます。私はここでよだれを考えています。エンジンはアプリケーションにありますが、ルールは管理フロントエンドを備えたデータベースにある可能性があります。

このような獣は、パラメータが変更されるだけでなく、式も変更される可能性があるシナリオで興味深いでしょう。

于 2010-01-09T20:10:54.163 に答える
1

これまでに提供してきた限られた情報に基づいて、良いアドバイスをすることは困難です。でも:

...この例には、組み込みのMySQL関数を使用してクエリに一致させることができないグラフベースのデータ型(化学構造)が含まれています。Javaライブラリは、テキストフィールドのクエリとコンテンツを、照合可能なメモリ内オブジェクトに変換します。このロジックをDBレイヤーに保持すると、たとえば、データベース内に結合が保持されます。これは、結合が属している場所のように見えます。少なくとも、それがアイデアです。

これには、MySQLでデータベース側のJavaを使用することはないと思います。代わりに、次のオプションを検討すると思います。

  • JDOやJPAなどのオブジェクトリレーショナルマッピング(たとえば、Hibernateを使用)を使用して、グラフベースのデータモデルとデータベースが提供するものとの間のマッピングを処理します。必ずしもバックエンドとしてRDBMSを使用する必要はありませんが、これがパフォーマンスの問題であることがすでにわかっている場合を除いて、おそらくここから始めるのが最適です。

  • データモデルとデータアクセスパターンをもう一度見てください。サーバー側のアプリケーションロジックに頼ることなく、アプリケーションのメインクエリを(効率的な)テーブル結合として実装できるようにする変換を理解できるかどうかを確認してください。

  • サーバー側のアプリケーションロジックを使用する必要がある場合(パフォーマンス上の理由から!)、RDBMSでサポートされているメカニズムを使用してください。たとえば、OracleではPL / SQLとPostgreSQLを使用しますが、いくつかのオプションがあります。アプリケーションの要件により適した別のRDBMSに切り替える準備をしてください。

私は(個人的に)いくつかのデータベースの実験的なブランチに依存することを避けます:

  • 実験ブランチがメインブランチにマージされていない場合はどうなるかを考えてみてください。サポートされていないブランチによっては、コードベースに固執することになり、メンテナンスが停止して失敗する可能性があります。

  • (現在)サポートされていないRDBMSブランチを使用すると、ソフトウェアを使用したい他の人々にとって障害になります。

明らかに、ソフトウェアの長期的な実行可能性が主要な関心事ではない場合は、このアドバイスを無視することを選択できます。しかし、それはおそらく誰かにとって重要です。例:あなたの研究監督者。

于 2010-01-09T23:36:35.273 に答える
1

これはかなり古い記事だと思いますが、更新する必要があります。データベーストリガーからJavaを呼び出す機能は、「Javaプログラミング言語のSQLルーチンとタイプ」(SQL / JRT)標準の一部です。

これについて詳しくは、ウィキペディア(https://en.wikipedia.org/wiki/SQL/JRT )を参照してください。

準拠するデータベースエンジンの中には..

HyperSQL:http ://hsqldb.org/ Oracle:https ://www.oracle.com/database/

于 2021-05-20T14:07:57.397 に答える