【问题标题】:Difference between hibernate.jdbc.fetch_size and batch fetch strategy @BatchSizehibernate.jdbc.fetch_size 和批量获取策略@BatchSize 的区别
【发布时间】:2015-04-29 16:53:39
【问题描述】:

对于 Hibernate 中的 N+1 查询问题,我在集合和类级别添加 @BatchSize(size=20)。它运行得非常好,因为它每次获取 20 条记录。 现在我发现有一个hibernate.jdbc.fetch_size 配置选项,我认为它与@BatchSize 注释相同。 但是,当我在我的项目中配置它时,它对 N+1 查询问题没有影响。

hibernate.jdbc.fetch_size 我错了吗? hibernate.jdbc.fetch_size 是干什么用的?

【问题讨论】:

    标签: java hibernate orm configuration batch-fetching


    【解决方案1】:

    hibernate.jdbc.fetch_sizeJDBC driver configuration,它确定:

    当有超过一行结果时提取的行数 选择语句

    Hibernate 使用此配置来设置 PreparedStatement.fetchSize 并根据 JDBC 文档:

    给 JDBC 驱动程序一个关于应该是多少行的提示 当 ResultSet 需要更多行时从数据库中获取 此语句生成的对象。如果指定的值为零, 然后提示被忽略。默认值为零。

    所以这个设置只是一个提示,它允许 JDBC Driver 批量检索选定的行,以最大限度地减少数据库网络往返的次数。

    @BatchSizeHibernate fetching 优化,它控制正在生成的 SELECT 语句的数量。

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 1970-01-01
      • 2017-06-11
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2013-08-09
      相关资源
      最近更新 更多