Jpa批量新增和更新

来自ling
跳转至: 导航搜索

https://www.cnblogs.com/blog5277/p/10661096.html

关键点:

- 在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.jpa.properties.hibernate.jdbc.batch_size需要结合spring.jpa.properties.hibernate.order_updates=true,spring.jpa.properties.hibernate.order_inserts=true 来保证更新和插入会重新组合优化批量操作sql(重组sql)