Java クラスを Db に格納するというアイデアがあった理由を説明できる人はいますか? それは何のために良いですか?Javaクラスでストアドプロシージャを作成する方法は?
よろしくお願いします!
Java クラスを Db に格納するというアイデアがあった理由を説明できる人はいますか? それは何のために良いですか?Javaクラスでストアドプロシージャを作成する方法は?
よろしくお願いします!
Oracle は、リリース 8i でストアド プロシージャをデータベースに導入しました。iは "internet"の略で、"internet-ready" のように、基本的にはちょっとしたマーケティングでした。しかし、Java ストアド プロシージャにより、利用可能な膨大な量の Java ライブラリを活用することで、Oracle はデータベースで利用できる機能の範囲を大幅に拡張することができました。Oracle 8i の新しいデータベース機能の多くは、Java ライブラリ、特に XML の PL/SQL ラッパーでした。
Oracle は、ラップされた Java のものよりもはるかに高速に実行されたため、Oracle 9 でその機能の多くをネイティブ C に大幅に書き直しました。私は知っています。
私たちにとって、いつ Java ストアド プロシージャを使用する意味があるのでしょうか? 基本的に、ネイティブ データベース言語では利用できない Java で利用可能な機能がある場合。たとえば、ICE Syslog Java クラスをラッパーする JSP を作成したので、PL/SQL ロギング ルーチンは syslog ファイルに書き込むことができます。これは、Java の非常に一般的な使用例を示しており、データベース アプリケーションの範囲を OS にまで広げています。おそらく、JSP の最も一般的な用途はhost
、PL/SQL プログラムが外部実行可能ファイルを起動できるようにするコマンドを作成することです。
私は、Java を知っていて PL/SQL を学びたくないという理由で JSP を作成する開発者を何人か知っています。これは、次の 2 つの理由から十分ではありません。
もちろん、いくつかの異なるデータベース製品に対して実行する必要がある製品を扱っている場合、Java のクロスプラットフォーム適応性は非常に魅力的です。SQL とは異なり、DBMS には標準がないため、手続き型言語 (T-SQL と PL/SQL など) に関しては、DBMS のさまざまなフレーバーが最も異なります。
Oracle での JSP の作成について学びたい場合は、オンライン ドキュメントから始めることをお勧めします。Oracle ではなく別のデータベースを使用していることが判明した場合、製品には独自の同様に優れたマニュアルがあると確信しています。
デバッガー、
他のポスターのいくつかも尋ねているように、あなたの質問は非常に曖昧です。
あなたが言及しているのは:
ポイント1の場合、一部のデータベースには、Javaを使用してストアドプロシージャと関数をコーディングし、それらをSQLエンジンに公開するためのプログラミングフックが用意されています。
ポイント2には、Javaオブジェクト(インスタンス)を読み取り/書き込みアクセス用のリレーショナルテーブルにマップするオブジェクトリレーショナルフレームワークがあります。(例:休止状態を参照)
ポイント3の場合、問題のクラスのBLOBを含むデータベースレコードからクラスをロードするClassLoaderを仮想的に作成できます。
それがいくつかの助けになることを願っています。
質問はオブジェクト リレーショナル マッピングに関するものだと思います。Java オブジェクトをリレーショナル データベース テーブルにマップする方法のルールを宣言的に記述することができます。そうすれば、JDBC コードの記述、オブジェクトの変更の追跡、読み込み戦略の実装などにかかる開発時間を大幅に節約できます。
質問が何であるかはよくわかりません...アイデアは、より難解でなじみのないストアドプロシージャスクリプト言語ではなく、Javaでストアドプロシージャのような操作を行うことでした。仕組みは次のとおりです。 http://www.oracle.com/technology/tech/java/jsp/index.html
おそらくここに記載されている利点のためです。
それらを作成する方法の例は、Oracle and Java Stored Procedures にあります。
Sybase ASE も Java ストアド プロシージャに対応していますが、ASE 15、IIRC では Java 1.2 のみです。利点については、他の回答を参照してください。