2015-12-03 7 views
7

私の質問は、私はどのように私はハイバネートクエリ言語の代わりにネイティブクエリを使用する必要があることを知っているか分からなかったということですか?私たちはネイティブクエリとhqlクエリを使用しますか?

+1

ほとんどない合理的なコードの場合でないはずである(可能な限り、私はHQLを使用したい(そして、あなたはとにかくクエリを使用する必要があります)とのみHQLは動作しません場合はネイティブクエリ)。 – Thomas

答えて

5

なぜ私たちはHQLを使用しますか?

が 休止ベースの永続性の層と直接ネイティブSQLクエリを使用することも可能であるが、代わりにHQL を用いることがより効率的です。他の二つの方法に比べHQLを選択する理由は、オブジェクトとオブジェクトのプロパティを使用してオブジェクト指向の用語でSQLクエリを表現することを可能

  1. HQLの下 を与えられています。
  2. 平文データを返す代わりに、HQLクエリは、準備されたオブジェクトのオブジェクト/タプルの形式でクエリ結果を返し、プログラム上でアクセスし、操作し、操作します。この アプローチでは、データベース から検索された "結果セット"を照会して、 オブジェクトをゼロから作成して投入するという日常的な作業はありません。
  3. HQLは多相クエリを完全にサポートしています。つまり、クエリ結果として返されるオブジェクトと共に、指定されたオブジェクトのすべての子オブジェクト( サブクラスのオブジェクト)が返されます。
  4. HQLの構文と機能はSQLと非常によく似ているため、HQLの学習と実装は簡単です。
  5. HQLには、SQLと比較して、ページネーション、動的プロファイリングによるフェッチ結合など、多くの先進的な機能が含まれています。
  6. HQLは、 実行時に、基になるデータベースのネイティブSQLダイアレクトに変換されたデータベース型の独立したクエリの作成を容易にします。このアプローチは、ネイティブSQL クエリが提供する特別な機能を非標準のネイティブSQLクエリを使用せずに利用するのに役立ちます。 HQLの

制限事項:

  1. HQLクエリはHQLクエリは、PL/SQLプログラミングに使用することはできません
  2. HQLクエリを挿入するために使用することはできませんDDL操作を実行することはできませんテーブルへの単一レコード
  3. SQLを比較するときの変換(HQLからSQLへの変換)が原因で、パフォーマンスがごくわずかに低下します。必要に応じて
関連する問題