gpt4 book ai didi

hibernate - 指定 hibernate.jdbc.batch_size 有什么意义?

转载 作者:行者123 更新时间:2023-12-03 20:21:23 29 4
gpt4 key购买 nike

这个 Hibernate 配置表面上应该控制在第一级缓存中缓存的对象数量。原因很容易理解,我们不想耗尽内存。

但有些事情让我感到困惑。我见过的每个实现包括 this website
有明确的冲洗和清除。没问题,但是配置属性有什么意义呢?

注意:我在这里假设 Hibernate 以某种方式监视缓存的大小,如果某种类型的对象数量增长到大于缓存大小,则将缓存与数据库同步。不知道这个假设是否错误???

最佳答案

该配置选项与一级缓存的大小无关。刷新 session 不会从缓存中删除任何内容。它将挂起的更改(插入、删除、更新)写入数据库。只有在明确调用 clear() 或 session 关闭时才会清除缓存。如果您不清除或子句 session (或 evist 特定实体),缓存将不断增长和增长。这不是问题,因为它通常非常短暂(交易的持续时间)。

JDBC 批量更新允许在单个批处理中向数据库发送多个更新查询。它减少了网络调用的数量。您可以将其视为上传包含 20 个文件的未压缩 zip,而不是单独发送 20 个文件。

混淆来自这样一个事实,即您问题中链接的页面中提到的批量更新与 JDBC 批量更新无关。 Hibernate 对批量更新的意义是“由批量作业完成的更新”。批处理作业通常具有比典型业务用例更长的事务,并在单个事务中更新数百、数千甚至更多实体。这就是为什么 Hibernate 建议在这种情况下定期刷新和清除 session ,以避免内存不足。

关于hibernate - 指定 hibernate.jdbc.batch_size 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935670/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com