Hibernate 控制何时在ehcache';d类

Hibernate 控制何时在ehcache';d类,hibernate,caching,ehcache,Hibernate,Caching,Ehcache,我们使用Hibernate和ehcache作为二级缓存 如果我加载一个缓存的实体(例如cache usage=“read-write”)并对其进行更新,这似乎会立即导致SQL更新 (如何)我可以影响何时进行此SQL更新 编辑:似乎设置a应该会有效果,但是无论我设置了哪种缓存模式,每个hibSession.update()都会立即生成SQL更新 如果我加载一个缓存的实体(例如cache usage=“read-write”)并对其进行更新,这似乎会立即导致SQL更新 这对我来说似乎是一件非常好的事

我们使用Hibernate和ehcache作为二级缓存

如果我加载一个缓存的实体(例如cache usage=“read-write”)并对其进行更新,这似乎会立即导致SQL更新

(如何)我可以影响何时进行此SQL更新

编辑:似乎设置a应该会有效果,但是无论我设置了哪种缓存模式,每个hibSession.update()都会立即生成SQL更新

如果我加载一个缓存的实体(例如cache usage=“read-write”)并对其进行更新,这似乎会立即导致SQL更新

这对我来说似乎是一件非常好的事情

似乎设置CacheMode应该会有效果,但无论我设置的是哪种CacheMode,每个hibSession.update()都会立即生成SQL更新

SQL更新是在刷新会话时执行的(在此处提交tx时),这正是预期的行为。我在
CacheMode
中看不到任何可以改变这一点的东西,我真的不明白您为什么要改变这一行为。我是说,你想什么时候更新?交易之外?我一定错过了什么。你能澄清一下吗


更新:问题似乎是关于写缓存。因此,引用以下内容澄清:

写后缓存 当你想到缓存,你就会到达 这些缓存策略:通读 缓存、直写缓存、, 写在缓存后面休眠秒 级别缓存是读写通过的 缓存如果缓存未命中, 从数据库中读取实体,然后 移交给缓存以进行后续处理 进入但H2LC没有写在后面 缓存。用陶土盘 持久性和异步SOUS模块 这对我来说真的很有效 要实现的特定用例 写在后面当前仅休眠 直接写入数据库。相反 如果修改为写入第二个 级别缓存和持久化 异步数据库队列,这将 减少延迟并增加 吞吐量急剧增加


写在后面并不是Hibernate目前的工作方式。

我想我考虑的是这里提到的写行为和缓存:我不确定这是否会带来其他问题,当然,我不知道这是否与Hibernate兼容(尽管我不认为有什么大的理由不应该)。@thomers我明白了。但我不知道这是否可以与Hibernate一起使用。例如,如果由于乐观锁定而无法在数据库中进行更改,该怎么办?我必须更深入地思考这一点(我可以看到Coherence、Infinispan、Ehcache确实提供了写后缓存,但我真的想知道Hibernate是否支持这种功能)。
        hibSession = HibernateUtil.getReadWriteSession();
        tx = hibSession.beginTransaction();
        User u = (User) hibSession.load(User.class, user_id);
        u.modify();
        hibSession.update(u);
        tx.commit();