ネイティブクエリとは
ネイティブクエリは、構造化クエリ言語(SQL)で表現されたクエリであり、C ++およびJavaクエリ式の簡潔でタイプセーフなメソッドです。 ネイティブクエリの使用は、クエリヒントや特定のデータベース固有の機能など、データベースの特定の機能を利用するのに役立ちます。 また、SQLまたはJava Database Connectivity(JDBC™)を使用して、アプリケーションから直接移行のクリーンパスを提供するのにも役立ちます。 ネイティブクエリは、スカラー値、エンティティ、またはその両方で構成される結果を提供するために使用されます。 これらのタイプのクエリは、ターゲットデータベースでのネイティブSQLの使用をサポートしています。
これらの種類のクエリは、文字列ベースのアプリケーションプログラミングインターフェイス(API)の欠点を克服できます。 この種のクエリはオブジェクトデータベースで使用されます。オブジェクトデータベースでは、オブジェクトの永続性がプログラマにとって一般的なタスクであり、データベースの一般的な機能です。 ただし、非ネイティブクエリは、式が単純な文字列であり、文字列が散在するオブジェクトグラフであるため、オブジェクト指向のプログラムでは外部に表示されます。
ネイティブクエリは、JavaおよびC ++内でクエリを表現することにより、データベースで直面する問題を軽減するのに役立ちます。 クエリは、APIまたはカスタマイズされたクエリ言語なしで記述できます。 さらに、統合開発環境(IDE)はタイプミスの削減に役立ちます。 そうすれば、ネイティブクエリは最大限にタイプセーフになり、IDEのリファクタリング機能からアクセスできるようになります。 最後に、データベースのバックエンドなしで、プレーンメモリコレクションに対してクエリを実行、テスト、およびプロトタイプ化できます。
クエリとそれに付随するSQLは、必ずしも他のデータベース間で転送できるとは限りません。 特定のネイティブクエリによって多くのエンティティが返されたら、これらの同じエンティティを、メタデータ定義マッピングソフトウェアプログラムのSQLステートメントの列結果に指定するとともにマッピングする必要があります。 その結果、これらを使用して、永続的なランタイムによって予期されるオブジェクトにJDBCの結果をマップできます。 これらのタイプのクエリに対して名前パラメータの使用が定義されることはなく、移植可能なアプリケーションは、ネイティブSQLクエリに対して位置パラメータのバインディングのみを使用できます。 結合のサポートは、単一の値の関係に限定されます。
ネイティブクエリを使用するには、プログラマはSQL結果セットを記述する必要があります。 結果セットの記述は、Entitymanagerなどのプログラムがエンティティのプロパティに列をマップするのに役立ちます。 スカラー結果を定義し、他のエンティティ結果と混合して、エイリアス列を返すこともできます。 結果セットが記述されると、ネイティブクエリの実行が可能になります。