2011-06-28 61 views
0

例如我有从hibernate会话中提取的实体User user = session.getById(12); user.setName('new_name') reject request此代码块之后,我不想将更新存储到用户,并将其纯粹用作Data Bean,但也不想将其从会话中分离出来,因为我想延迟加载。对于修改,我想使用save,saveOrUpdate方法。是否有可能说休眠不会自动更新会话对象的所有修改字段?如何在会话关闭时强制休眠不保存和数据更新?

回答

0

您可以使用无状态会话。他们不会进行任何脏检查和相应的自动更新。很明显,你会失去会话缓存(你可以自己跟踪你的对象)和批量插入/删除/更新。

+0

不,我不喜欢失去会话的机会和表现。此外,我想通过不对脏物进行脏检查来提高性能。 – yura

1

FLUSHMODE.MANUAL只有在你明确指出的情况下才会刷新,我相信。

+0

它保证合并,保存等方法将实际数据存储到数据库吗? – yura

+0

是否可以将SessionFactory配置为始终创建手动刷新会话? – yura

+0

@ yura - 不,你必须刷新。或者使用FlushMode.Commit()和commit()。否则不会发生冲洗。 SessionFactory对这种模式AFAIK没有默认值,当然你可以提供一个SessionFactoryHolder对象来返回包装Sessions的默认值。 – MJB