Hibernate: Safely reattach an object to the session

I'm maintaining a cache of objects across hibernate sessions by storing (possibly-detached) objects in a map. When the cache gets a hit, I test if the object is already part of the session with `Session.contains(object)`. If not, I re-attach it with `Session.lock(object, LockMode.NONE)`. The problem is, if the same object was loaded previously in the session, it throws a org.hibernate.NonUniqueObjectException. Given a detached instance, I see no way to find out in advance if this exception will get thrown, without possibly hitting the database. There are a couple workarounds:
  1. Reattach all cached objects at the start of every transaction.
  2. Catch the NonUniqueObjectException and then call session.load(object.class, object.getId());
Neither of these are as clean as checking the session in advance for an object class + id. Is there any way to do that?

以上就是Hibernate: Safely reattach an object to the session的详细内容,更多请关注web前端其它相关文章!

赞(0) 打赏
未经允许不得转载:web前端首页 » JavaScript 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准