You are talking about general best practices. Unless you have millions of entries, you should be fine. If you have millions of entities, then fetching all those is going to be the performance bottleneck anyway.
Equals and hashCode don't need to throw exceptions. If you really want to spot some weird use case, you should probably log an error message, while still allowing the applications to proceed. The equals and hahsCode contract don't say that you should ever throw an Exception, so keep that in mind too. This question about having Exceptions thrown from equals has been asked
on StackOverflow, so you should chek it out too.