栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Data JPA:批量插入嵌套实体

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Data JPA:批量插入嵌套实体

确保正确配置与Hibernate批处理相关的属性:

<property name="hibernate.jdbc.batch_size">100</property><property name="hibernate.order_inserts">true</property><property name="hibernate.order_updates">true</property>

关键是,如果连续语句操作同一张表,则可以对其进行批处理。如果出现要插入另一个表的语句,则必须在该语句之前中断并执行先前的批处理构造。使用该

hibernate.order_inserts
属性,您可以允许Hibernate在构造批处理语句之前对插入进行重新排序(
hibernate.order_updates
对update语句具有相同的作用)。

jdbc.batch_size
是Hibernate将使用的最大批处理大小。尝试分析不同的值,然后选择一个在您的用例中表现出最佳性能的值。

请注意,如果使用id生成器,则将禁用插入语句的批处理

IDENTITY

特定于MySQL,您必须指定

rewriteBatchedStatements=true
作为连接URL的一部分。为确保批处理按预期方式工作,请添加
profileSQL=true
以检查驱动程序发送到数据库的SQL。

如果您的实体已版本化(出于乐观锁定目的),那么为了利用批量更新(不影响插入),您还必须打开:

<property name="hibernate.jdbc.batch_versioned_data">true</property>

使用此属性,您可以告诉Hibernate在执行批处理更新(需要执行版本检查)时JDBC驱动程序能够返回受影响行的正确计数。您必须检查这对于您的数据库/
jdbc驱动程序是否正常工作。例如,它不适用于Oracle11和更早的Oracle版本。

您可能还希望在每个批处理之后刷新并清除持久性上下文以释放内存,否则所有托管对象都将保留在持久性上下文中,直到将其关闭。

另外,您可能会发现此博客很有用,因为它很好地解释了Hibernate批处理机制的详细信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号