2012-11-05 89 views
2

我正在使用hibernate 3.2.5。 hibernate配置文件中語句hibernate.jdbc.batch_size的確切用法/含義是什麼?在配置中設置批量大小

從文檔中,我可以看到我們需要在配置中添加此行以進行批處理,否則批處理默認處於禁用狀態。除此之外,將上述行分配給一個數字的具體原因是什麼?

它是不是就像我將它分配給30(假設)那麼我的批處理將能夠插入/更新/刪除最多30行,我在我的本地測試了這個東西。那麼我們爲此分配的號碼有什麼用?

請讓我知道這件事。

問候,

回答

3

只是解釋:比方說,你有一個實體Parent,其中有one-to-many與另一個實體Child與初始化爲lazy關係。

通過定義hibernate.jdbc.batch_size = 30,你的意思是,當你嘗試從Parent實體獲取Child實體,將在30個30 Child對象的批量大小,加載它們在同一時間,如果其可用的30以上,否則可數的對象。

例如如果Parent has 100 Child對象延遲加載,現在您正在迭代Child對象,它將在後端觸發4個查詢以加載30, 30, 30 and 10塊中的子對象。

希望得到這個幫助!

+0

好吧,如果沒有關係存在,那麼這不會進入圖片?你什麼意思是'懶惰'初始化?你能解釋這兩個嗎? – user182944

+0

@ user182944:我剛剛舉了一個例子。真正的意思是,hiberate會盡可能優化後端查詢,但使用批處理,如我的示例中提到的那樣,其觸發4個查詢而不是100個。 –

+0

您確定此屬性與延遲加載而非更新相關,如下所述通過Anand?我認爲這個與延遲加載相關:hibernate.default_batch_fetch_size – Lodovik

2

JDBC批量更新允許將單個批次中的多個更新查詢發送到數據庫。它減少了網絡呼叫的數量。您可以將其視爲上傳包含20個文件的未壓縮zip文件,而不是單獨發送20個文件。