What advantages does get
have over createQuery
?
I can see there might be a slight performance improvement in not having to parse the HQL, but is there any other major advantage to using get over createQuery?
What advantages does get
have over createQuery
?
I can see there might be a slight performance improvement in not having to parse the HQL, but is there any other major advantage to using get over createQuery?
First, it's much quicker to type, is much more readable, and expresses the intent clearly: get an entity by its ID. And it's basically impossible to make an error, whereas you could have a typo in your HQL query.
Regarding performance, the main advantage is that it executes a select statement only if the entity is not in the session cache yet. An HQL query will be executed every time. And if you have a second-level cache, get()
will avoid executing a query completely if the entity is already in the second-level cache.
get()
uses directly session to retrieve objects.
createQuery()
uses HQL