![](/img/trans.png)
[英]What is the difference between hibernate.jdbc.fetch_size and hibernate.jdbc.batch_size?
[英]Difference between hibernate.jdbc.fetch_size and batch fetch strategy @BatchSize
對於 Hibernate 中的 N+1 查詢問題,我在集合和類級別添加了@BatchSize(size=20)
。 它運行得非常好,因為它每次獲取 20 條記錄。 現在我發現有一個hibernate.jdbc.fetch_size
配置選項,我認為它與@BatchSize
注釋相同。 但是,當我在我的項目中配置它時,它對 N+1 查詢問題沒有影響。
我錯了hibernate.jdbc.fetch_size
嗎? hibernate.jdbc.fetch_size
有什么用?
hibernate.jdbc.fetch_size
是JDBC 驅動程序配置,它確定:
當 select 語句的結果多於一行時獲取的行數
Hibernate 使用此配置來設置PreparedStatement.fetchSize並根據 JDBC 文檔:
當此語句生成的 ResultSet 對象需要更多行時,向 JDBC 驅動程序提供有關應從數據庫中提取的行數的提示。 如果指定的值為零,則忽略提示。 默認值為零。
所以這個設置只是一個提示,它允許 JDBC Driver 批量檢索選定的行,以最大限度地減少數據庫網絡往返次數。
@BatchSize
是Hibernate 提取優化,它控制生成的 SELECT 語句的數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.