Java hibernate.jdbc.fetch_size和批处理获取策略@BatchSize之间的差异
对于Hibernate中的N+1查询问题,我在集合和类级别添加了Java hibernate.jdbc.fetch_size和批处理获取策略@BatchSize之间的差异,java,hibernate,orm,configuration,batch-fetching,Java,Hibernate,Orm,Configuration,Batch Fetching,对于Hibernate中的N+1查询问题,我在集合和类级别添加了@BatchSize(size=20)。而且它工作得非常好,每次可以获取20条记录。 现在我发现有一个hibernate.jdbc.fetch_size配置选项,我认为它与@BatchSize注释相同。 但是,当我在项目中配置它时,它对N+1查询问题没有影响 我的hibernate.jdbc.fetch\u size错了吗? 什么是hibernate.jdbc.fetch\u size hibernate.jdbc.fetch_si
@BatchSize(size=20)
。而且它工作得非常好,每次可以获取20条记录。
现在我发现有一个hibernate.jdbc.fetch_size
配置选项,我认为它与@BatchSize
注释相同。
但是,当我在项目中配置它时,它对N+1查询问题没有影响
我的hibernate.jdbc.fetch\u size
错了吗?
什么是hibernate.jdbc.fetch\u size hibernate.jdbc.fetch_size是一个 上有多行结果时获取的行数 选择语句 Hibernate使用此配置根据JDBC文档设置和: 给JDBC驱动程序一个提示,告诉它应该添加的行数 当ResultSet需要更多行时从数据库中获取 由该语句生成的对象。如果指定的值为零, 然后忽略提示。默认值为零 因此,此设置只是一个提示,它允许JDBC驱动程序批量检索所选行,以最小化数据库网络往返次数
@BatchSize
是一种优化,它控制生成的SELECT语句的数量。hibernate.jdbc.fetch\u size
是一个,它确定:
上有多行结果时获取的行数
选择语句
Hibernate使用此配置根据JDBC文档设置和:
给JDBC驱动程序一个提示,告诉它应该添加的行数
当ResultSet需要更多行时,从数据库中获取
由该语句生成的对象。如果指定的值为零,
然后忽略提示。默认值为零
因此,此设置只是一个提示,它允许JDBC驱动程序批量检索所选行,以最小化数据库网络往返次数
@BatchSize
是一种优化,它控制生成的SELECT语句的数量