6.1 名前付きクエリ
Hibernate を使用すると、クエリをコードに直接保存しなくても済みます。代わりに、クエリに名前を付け、注釈として個別に保存することを彼は提案しています。それでは、目的のリクエストをその名前で直接取得します。例:
@org.hibernate.annotations.NamedQueries({
@org.hibernate.annotations.NamedQuery(name = "Employee_FindById",
query = "from Employee where id = :id"),
@org.hibernate.annotations.NamedQuery(name = "Employee_FindAllEmployes",
query = "from Employee"),
@org.hibernate.annotations.NamedQuery(name = "Employee_UpdateEmployeeName",
query = "Update Employee set name = :newName where id = :id"),
...
})
注釈はエンティティ クラスの前に追加できます。クエリ名はエンティティに関連付けられません。
クエリ (クエリ) にさまざまなパラメータを追加することもできます。
@org.hibernate.annotations.NamedQuery(
name = "Employee_ FindAllEmployes",
query = "from Employee",
timeout = 1,
fetchSize = 10,
cacheable = true,
cacheMode = "GET"
)
createNamedQuery
このようなリクエストの使用は非常に簡単です。このためには、メソッドの代わりにメソッドを使用する必要がありますcreateQuery
。
Query<Employee> query = session.createNamedQuery("Employee_FindAllEmployes", Employee.class);
List<Employee> resultLIst = query.list();
6.2 ネイティブクエリ
もう 1 つのシンプルですが非常に便利なものはNativeQueryです。
HQL を使用したくないが、エンティティ マッピングに Hibernate を使用したい場合は、古き良き SQL でクエリを作成できます。誰もあなたを制限しません。
createNativeQuery()
これを行うには、の代わりにメソッドを呼び出すだけですcreateQuery()
。
NativeQuery<Employee> query = session.createNativeQuery("select * from employee", Employee.class);
List<Employee> resultLIst = query.list();
書くだけでcreateNativeQuery
、すべてが以前と同じように機能します。このメソッドは、 QueryクラスがサポートするすべてのメソッドをサポートするNativeQuery型のオブジェクトを返します。あなたにとっては何も変わりません。
さらに、ネイティブ SQL クエリは名前付きクエリとして保存することもできます。
@org.hibernate.annotations.NamedNativeQueries(
@org.hibernate.annotations.NamedNativeQuery(name = "Employee_GetAll",
query = "select * from employee",
resultClass = Employee.class)
)
そしてもちろん、これらを操作するためのコードは次のとおりです。
NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
GO TO FULL VERSION