Spring Boot + JPA實現MySQL批量更新原始碼 - github

banq發表於2019-01-15

這個小的開源專案Github是展示如何使用Spring Boot + JPA實現MySQL批量更新。

關鍵點:

- 在application.properties中設定spring.jpa.properties.hibernate.jdbc.batch_size

- 在application.properties中設定JDBC URL rewriteBatchedStatements=true(MySQL的優化,語句被重寫為單個String緩衝區並在單個請求中傳送)

- 在application.properties中設定JDBC URL cachePrepStmts=true(啟用快取和如果你決定設定prepStmtCacheSize,prepStmtCacheSqlLimit等等也是有用的;沒有這個設定,快取被禁用)

- 在application.properties中設定JDBC URL useServerPrepStmts=true(這樣你切換到伺服器端預處理語句(可能會帶來顯著的效能提升))

- 如果使用cascade all / merge的父子關係(例如,一對多,多對多),則考慮spring.jpa.properties.hibernate.order_updates=true通過訂購更新來設定優化批處理

- 在Hibernate 5之前,我們需要在application.properties中設定一個設定,用於在更新和刪除操作期間啟用版本化實體的批處理(包含@Version隱式樂觀鎖定的實體)。此設定為:spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true。從Hibernate 5開始,預設情況下應該設定true。

父子關係的資料更新輸出案例:

Spring Boot + JPA實現MySQL批量更新原始碼 - github

點選標題見原文。

 

相關文章