ale*_*kiy 15 hibernate updatebatchsize first-level-cache
这个Hibernate配置表面上应该控制在第一级缓存中缓存多少个对象.原因很容易理解,我们不想耗尽内存.
但有些事让我感到困惑.我见过的每个实现,包括这个网站 都有明确的同花顺和清晰.没问题,但那么配置属性有什么意义呢?
注意:我在这里假设Hibernate以某种方式监视缓存的大小,如果某种类型的对象数量增长到大于缓存大小,则将缓存与db同步.不知道那个假设是不是错了???
JB *_*zet 22
此配置选项与第一级缓存的大小无关.并且刷新会话不会从缓存中删除任何内容.它将挂起的更改(插入,删除,更新)写入数据库.仅当明确调用clear()或会话关闭时,才会清除缓存.如果您不清除或声明会话(或逐出特定实体),缓存将继续增长和增长.这不是问题,因为它通常非常短暂(交易的持续时间).
JDBC批处理更新允许在一个批处理中向数据库发送多个更新查询.它减少了网络呼叫的数量.您可以将其视为上传包含20个文件的未压缩zip,而不是单独发送20个文件.
令人困惑的是,您的问题中链接的页面中提到的批处理更新与JDBC批处理更新无关.Hibernate对批量更新的意义是"批处理作业完成的更新".批处理作业通常具有比典型业务用例更长的事务,并且在单个事务中更新数百,数千甚至更多实体.这就是为什么Hibernate建议在这种情况下定期刷新和清除会话,以避免内存不足.
| 归档时间: |
|
| 查看次数: |
12986 次 |
| 最近记录: |