これらの方法の違いを知りたいです。
EntityManagerの メソッドcreateQuery()
とメソッドを使用する場合find()
それぞれの利点は何ですか?
答えてくれてありがとう。
これらの方法の違いを知りたいです。
EntityManagerの メソッドcreateQuery()
とメソッドを使用する場合find()
それぞれの利点は何ですか?
答えてくれてありがとう。
find
主キーでエンティティを検索したい場合に使用します。つまり、探しているものが正確にわかっているので、それをデータベースから引き出したいだけです。
条件を使用createQuery
してエンティティを検索する場合、または JPQL ステートメントを使用して返されるものを定義する場合に使用します。したがって、いくつかの条件に一致するエンティティまたはエンティティのコレクションを取得する場合は、クエリを使用します。
この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 を持つエンティティの検索に制限されます。