9

これらの方法の違いを知りたいです。

EntityManagerの メソッドcreateQuery()とメソッドを使用する場合find()

それぞれの利点は何ですか?

答えてくれてありがとう。

4

2 に答える 2

14

find主キーでエンティティを検索したい場合に使用します。つまり、探しているものが正確にわかっているので、それをデータベースから引き出したいだけです。

条件を使用createQueryしてエンティティを検索する場合、または JPQL ステートメントを使用して返されるものを定義する場合に使用します。したがって、いくつかの条件に一致するエンティティまたはエンティティのコレクションを取得する場合は、クエリを使用します。

于 2013-03-29T14:14:04.590 に答える
10

このcreateQueryメソッドを使用すると、実行される JPQL ステートメントを作成できます。許可されている JPQL ステートメントは、 によって実行されるステートメントよりもはるかに動的ですfind。たとえば、次の表があるとします。

create table CAT(
   cat_id integer,
   cat_name varchar(40)
)

クエリを実行して、名前で猫を見つけることができます。

entityManager.createQuery("select c from Cat c where c.name = :name");

このfindメソッドでは、主キーを使用してオブジェクトを取得することしかできません。したがってfind、上記の表のメソッドを使用するには:

entityManager.find(Cat.class, new Integer(1));

簡単に言えば、createQueryより動的な方法でエンティティを取得できますがfind、既知の ID を持つエンティティの検索に制限されます。

于 2013-03-29T14:17:24.363 に答える