Java は広く使用されているプログラミング言語として、データベース開発において重要な役割を果たしています。 Oracle は、現在最も人気のあるリレーショナル データベース管理システムの 1 つであり、その高い拡張性と強力なパフォーマンスにより、エンタープライズ アプリケーションで広く使用されています。ストアド プロシージャは、Oracle データベースを使用する場合に非常に一般的なテクノロジです。この記事では、Java が Oracle ストアド プロシージャを呼び出す方法を紹介します。
1. Oracle ストアド プロシージャの概要
ストアド プロシージャは、再利用可能なプリコンパイルされた SQL ステートメントのセットであり、通常はデータベースに保存されます。ストアド プロシージャは、パラメータの受け取り、出力の生成、結果の返しなどを行うことができ、実行効率において大きな利点があります。 Oracle データベースでは、ストアド プロシージャは通常、PL/SQL 言語で記述されます。
2. Java による Oracle ストアド プロシージャの呼び出し
Java で Oracle ストアド プロシージャを呼び出すには、JDBC を使用する方法と Hibernate フレームワークを使用する方法の 2 つがあります。
JDBC を使用して Oracle ストアド プロシージャを呼び出すには、通常、次の手順が必要です。
(1) データベース接続を開く
Pass Class.forName() メソッドと DriverManager.getConnection() メソッドを使用して、データベース接続を作成します。
(2) CallableStatement オブジェクトの作成
JDBC では、CallableStatement を通じてストアド プロシージャを呼び出します。 CallableStatement オブジェクトは、Connection.prepareCall() メソッドを使用して作成できます。
(3) パラメータの設定
CallableStatement オブジェクトの setXXX() メソッドを使用して、ストアド プロシージャの入力パラメータと出力パラメータを設定します。
(4) ストアド プロシージャを実行します。
CallableStatement.execute() メソッドを使用してストアド プロシージャを実行します。
(5) リソースの解放
実行完了後、CallableStatement オブジェクトやデータベース接続を含むリソースを閉じる必要があります。
次に、JDBC を使用して Oracle ストアド プロシージャを呼び出すコード例を示します。
// 首先加载Oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //创建数据库连接 Connection conn = DriverManager.getConnection(url, username, password); //设置输入参数和输出参数 CallableStatement cstmt = conn.prepareCall("{call procedure_name(?,?,?)}"); cstmt.setString(1, input_param1); cstmt.setString(2, input_param2); cstmt.registerOutParameter(3, Types.VARCHAR); //执行存储过程 cstmt.execute(); //获取输出参数 String output_param = cstmt.getString(3); //释放资源 cstmt.close(); conn.close();
Hibernate フレームワークは、Java オブジェクトをリレーショナル データベースにマップする方法を提供するオープン ソースのオブジェクト/リレーショナル マッピング (ORM) フレームワークです。 。 Hibernate フレームワークを使用する場合、通常はストアド プロシージャとカスタム SQL ステートメントを使用してデータベースをクエリする必要があります。 Hibernate では、@NamedStoredProcedureQuery アノテーションを使用してストアド プロシージャを呼び出すことができます。
次に、Hibernate を使用して Oracle ストアド プロシージャを呼び出すコード例を示します。
//定义存储过程 @NamedStoredProcedureQuery( name = "PROCEDURE_NAME", procedureName = "procedure_name", parameters = { @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "input1"), @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "input2"), @StoredProcedureParameter(mode = ParameterMode.OUT, type = String.class, name = "output") } ) //调用存储过程 StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("PROCEDURE_NAME"); query.setParameter("input1", input1); query.setParameter("input2", input2); query.execute(); //获取结果 String result = (String) query.getOutputParameterValue("output");
3. 概要
Java による Oracle ストアド プロシージャの呼び出しは、エンタープライズ レベルの開発における非常に一般的な要件であり、JDBC または Hibernate フレームワークを使用することで実現できます。 JDBCを使用する場合、データベース接続、CallableStatementオブジェクトの作成、パラメータの設定、ストアドプロシージャの実行、リソースの解放などの手順を実行する必要があり、比較的面倒です。 Hibernate フレームワークを使用する場合、 @NamedStoredProcedureQuery アノテーションを使用してこれを実現できます。どの方法を使用する場合でも、パラメータを設定する種類と順序、および正しいストアド プロシージャ名に注意する必要があります。
以上がJavaはOracleストアドプロシージャを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。