• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Hibernate should hit db every single time

 
Simon Ship
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

My application has web services component which updates the database. I am using Hibernate 2.1 to retrieve the data from the database.

The sequence of event is like this.

1) Retrieve a record from a table using Hibernate.
2) Using web service the record is updated.
3) The application performs the query again. The stale value is returned by the hibernate.

I'm sure there must be some way to tell Hibernate that it doesn't have full control over the database and should go to the DB for every single query.

How do I solve this problem.

Thanks.
/Simon
 
Sujatha Kumar
Ranch Hand
Posts: 134
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Simon,

How about trying with lazy="true".
It will load the records lazily upon request.
 
Simon Ship
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Using lazy feature will only make sure that the associated classes will be loaded only when it's needed.

My question still remains same. Let's say that a record is lazily loded. Web service updates the record. You query for the record, the stale record will show up because Hibernate is not aware that some other system has changed the record behind-the-scene.

/simon
 
David Harkness
Ranch Hand
Posts: 1646
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Normally you'd open a new Session for each application transaction. Since each Session starts empty, Hibernate would hit the database again. Of course, if you're using a second level cache, you'd still need to address that. If you want to reuse the Session, you could evict() the object before loading it. I'm not sure if this affects the second level cache, though.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic