Expect to come across this popular question in hibernate advanced interview questions. Hibernate’s session class has 2 popular methods get() and load(), to access an object. These 2 methods are similar in the work they do but have very subtle differences. The differences are as follows:  If an object is not found based on the id passed to it, the get() method will return a null, whereas the load() method will throw an exception. It throws the ObjectNotFound exception.  When using load() method, information other than the id can be retrieved from the proxy, whereas get() will always hit the database for any information.   If the developer is sure of the object’s existence, it is always preferable to use load() as it returns the information faster and without contacting the database. If the object’s existence is doubtful, it is preferable to use get() as it will return a null if it cannot find the object but will be slower if the object does exist as it will contact the database for information.  If an object is found, get() method will return a fully initialized object, whereas the load() method will return the object with the Id but may not initialize the other properties of the object. If you require an object with just the Id to create a relationship, use the load()method