Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists.
You should not use this method to determine if an instance exists (use find() instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error.
whereas "get" method:
Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
So, load is going to throw an error if the object for a given id does not exist whereas get is just going to return null, in such a case.
I think get will also be returning a proxy object. whereas load wanted to load the data, and that is one of the reasons why it needs to throw an exception.