File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Object Relational Mapping and the fly likes Hibernate load() method Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "Hibernate load() method " Watch "Hibernate load() method " New topic

Hibernate load() method

ashish bassii

Joined: Sep 05, 2008
Posts: 15
I have a basic question about Hibernate load and get methods

I just wrote a simple Hibernate standalone application.

One table, one class, and one hbm file mapping them. Then I wrote a simple piece of Java/hibernate code to retrieve one record

What I had understood is that if we are sure that object/record is available in memory we should use the load method, or use get if one is not sure, and get will hit DB and get the record

Now since this is a standalone application, I though load would break, after all I have just started the application, memory must be empty, and load method should throw an exception, but to my surprise it worked fine, and record was retrieved, the sysout displayed the correct value. What am I missing?
Jelle Klap

Joined: Mar 10, 2008
Posts: 1951

Both load() and get() will retrieve the entity instance from the database if required. The difference is that load() assumes the entity instance exists for the given identifier, and will throw an exception if it does't, whereas get() makes no such assumptions and will simply return null in such a case. Both methods will also only hit the database if the entity is not already associated with the session.

Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
Anindya Roy
Ranch Hand

Joined: May 11, 2014
Posts: 76
get() method always hits the database whereas load() method may or may not hit the database always because it returns the proxy object
Jaikiran Pai

Joined: Jul 20, 2005
Posts: 10441

Anindya Roy wrote:get() method always hits the database

That's not true. Like Jelle already noted, the session is first checked to see if that entity instance is already associated with the session before querying the database.

[My Blog] [JavaRanch Journal]
I agree. Here's the link:
subject: Hibernate load() method
It's not a secret anymore!