web-dev-qa-db-ja.com

クエリ、ネイティブクエリ、名前付きクエリ、型付きクエリの違い

クエリ、ネイティブクエリ、名前付きクエリ、型付きクエリの違いは何ですか? 「スタンドアロン」クエリは存在しますか、それとも単なる略語ですか?私の考えでは、ネイティブクエリは単純なsqlで記述されたクエリですが、名前付きクエリはエンティティに関連しています(hibernate-mapping)。誰かがこれを簡単に説明できますか?

55
Chris311

クエリ

クエリとは、DMLステートメント(CRUD操作)を実行するために一般的に使用されるSQLと同様の構文を持つJPQL/HQLクエリを指します。

JPAでは、entityManager.createQuery()を使用してクエリを作成できます。詳細については API をご覧ください。

Hibernateでは、session.createQuery() "を使用します

NativeQuery

ネイティブクエリとは、実際のSQLクエリ(実際のデータベースオブジェクトを指す)を指します。これらのクエリは、データベースクライアントを使用してデータベースで直接実行できるsqlステートメントです。

JPA:entityManager.createNativeQuery() Hibernate(JPA以外の実装):session.createSQLQuery()

NamedQuery

定数の定義方法に似ています。 NamedQueryは、名前を指定してクエリを定義する方法です。これは、休止状態のマッピングファイルで定義することも、エンティティレベルで注釈を使用して定義することもできます。

TypedQuery

TypedQueryには、クエリを作成するときにエンティティのタイプを指定するオプションが用意されているため、その後の操作では、目的のタイプへの明示的なキャストは必要ありません。通常のQuery AP​​Iは、期待するオブジェクトの正確なタイプを返さないため、キャストする必要があります。

61