ホームページ > データベース > mysql チュートリアル > JPA を使用して Java でストアド プロシージャを呼び出すにはどうすればよいですか?

JPA を使用して Java でストアド プロシージャを呼び出すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-16 11:59:02
オリジナル
496 人が閲覧しました

How Can I Call Stored Procedures in Java Using JPA?

Java および JPA でストアド プロシージャを呼び出す

ビジネス ロジックをストアド プロシージャに保存すると、パフォーマンスとコードの保守性が向上します。この記事では、JPA を使用して Java からストアド プロシージャを呼び出す 2 つの方法、CallableStatement メソッドと JPA 2.1 StoredProcedureQuery について説明します。

CallableStatement メソッド

CallableStatement クラスは、ストアド プロシージャを呼び出すための汎用メソッドを提供します。これにより、入力パラメータを指定し、出力パラメータまたは結果セットを取得できます。ただし、SQL 型と Java オブジェクトの間の手動マッピングが必要であり、面倒な場合があります。

JPA 2.1 StoredProcedureQuery

JPA 2.1 では、ストアド プロシージャを呼び出すための組み込みサポートが導入されました。 StoredProcedureQuery クラスを使用すると、入力パラメータを渡し、結果クラスまたは resultSetMapping を指定できるようになり、このプロセスが簡素化されます。

JPA StoredProcedureQuery を使用して「getEmployeeDetails」ストアド プロシージャを呼び出します:

<code class="language-java">Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}", EmployeeDetails.class)
    .setParameter(1, employeeId)
    .setParameter(2, companyId);

List<EmployeeDetails> result = query.getResultList();</code>
ログイン後にコピー

JPA を使用してストアド プロシージャを呼び出す利点

  • 型安全性と自動マッピング: JPA は SQL 型と Java 型の間の変換を処理し、データの整合性を確保します。
  • シンプルな API: StoredProcedureQuery インターフェイスは、ストアド プロシージャの実行および結果の取得のプロセスを簡素化します。
  • 名前付きパラメータのサポート: 混乱やエラーを避けるために、NativeQuery で入力パラメータに明示的に名前を付けることができます。

ストアド プロシージャを呼び出す SQL ステートメント

ストアド プロシージャを呼び出すための正しい SQL ステートメントは次のとおりです:

<code class="language-sql">{call getEmployeeDetails(?,?)}</code>
ログイン後にコピー

注: ストアド プロシージャ名を中括弧で囲み、パラメータをカンマと疑問符 (?) で区切ります。

その他の注意事項:

  • ストアド プロシージャが結果セットを返す場合、getSingleResult() は 1 行のみを期待している場合でも失敗する可能性があるため、注意して使用してください。
  • resultSetMapping 名または結果クラスの詳細を渡して、結果セットを Java オブジェクトにマップします。
  • パラメータ名はすべての場合に機能するとは限らないため、代わりにパラメータ インデックスを使用してみてください。

以上がJPA を使用して Java でストアド プロシージャを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート