Reputation: 1094
It is clear that, by default, when we execute entityManager.find(Post.class, 1L);
then the Post
instance for id=1
will be retrieved and placed in 1st level cache and then if we again execute the same entityManager.find(Post.class, 1L);
in the same transaction, the post instance will be returned directly from 1st level cache without querying the database.
My question is the following:
Is the 1st level cache checked only when we try to get the entity by id
executing entityManager.find(...);
method ? I mean what if we fetch the same Post
instance(having id = 1
) by different property other than ID, e.g. using Criteria query fetching the post by name ? Is it still going to check the 1st level cache ?
What about querying the same row by native query
, jpql
or spring data query method
? Does JPA/Hibernate parse native query
and jpql
queries in order to find out if there is a corresponding entity in 1st level cache ?
Upvotes: 2
Views: 1996