If you just want to know whether the object exists, send a SELECT COUNT
to your database. That will return 0 or 1.
The cost of the exception handling isn’t that big (unless you do that millions of times during a normal operation), so I wouldn’t bother.
But the code doesn’t really reflect your intention. Since getSingleResult()
calls getResultList()
internally, it’s clearer like so:
public boolean objExists(...) {
return getResultList(...).size() == 1;
}
If you query by object id and you have caching enabled, that will become a simple lookup in the cache if the object has already been loaded.