簡體   English   中英

hibernate.jdbc.fetch_size 和批量抓取策略@BatchSize 的區別

[英]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_sizeJDBC 驅動程序配置,它確定:

當 select 語句的結果多於一行時獲取的行數

Hibernate 使用此配置來設置PreparedStatement.fetchSize並根據 JDBC 文檔:

當此語句生成的 ResultSet 對象需要更多行時,向 JDBC 驅動程序提供有關應從數據庫中提取的行數的提示。 如果指定的值為零,則忽略提示。 默認值為零。

所以這個設置只是一個提示,它允許 JDBC Driver 批量檢索選定的行,以最大限度地減少數據庫網絡往返次數。

@BatchSizeHibernate 提取優化,它控制生成的 SELECT 語句的數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM