首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JPA和Hibernate进行高效批/批量插入的明确方法?

使用JPA和Hibernate进行高效批/批量插入的明确方法?
EN

Stack Overflow用户
提问于 2011-10-25 04:36:25
回答 1查看 1.9K关注 0票数 2

虽然这里还有其他类似的问题,但我没有看到任何能解决所有问题的问题,也没有一个很好的明确答案。本质上,我正在使用Hibernate支持的JPA架构J2EE应用程序中的数据访问和服务层。

应用程序执行大型数据加载/更新操作,我希望确保这些操作尽可能高效地进入数据库。正确的答案将用代码解释如何使用大量的数据集合来进行插入、更新和理想的合并。

identifiers?

  • any

  • 在配置中或在受到尊重的代码中设置一个批处理大小,以及如何使用JPA (如果可能的话不使用原始Hibernate )对JPA进行编码,以及如何和何时使用JPA事务命令/注释,以确保有效地使用内存/第一级/二级缓存。

  • 向我解释,如果使用身份标识符生成器,“Hibernate将禁用JDBC级别的插入批处理”--这是否与使用主要的JPA命令/注释的序列有关,正如我应该了解的那样。

注意,我已经问了一些有关Hibernate和J2EE/JPA的相关问题,如果您有什么需要添加的,请执行以下操作

这两种技术对我来说都是相对较新的技术(见我的其他问题):

How should EntityManager be used in a nicely decoupled service layer and data access layer?

Should raw Hibernate annotated POJO's be returned from the Data Access Layer, or Interfaces instead?

EN

回答 1

Stack Overflow用户

发布于 2011-10-25 07:09:52

当使用标识生成器时,我可以解释关于Hibernate禁用批处理插入的语句。

为了使Hibernate能够使用标识生成器获得新实体的标识符,它必须实际执行对数据库的插入,然后执行选择以获得该标识符值,因为该值是由Insert上的数据库分配的。这与使用序列生成器形成了对比。在这种情况下,Hibernate可以预先获得尽可能多的标识符(如果需要,可以分批进行),并在插入之前将它们分配给正在插入的实体。

因此,区别是插入,然后选择身份生成器与选择,然后插入一个序列。

因此,Hibernate必须在使用标识生成器时逐一执行插入,但在使用序列生成器时可以对其进行批处理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7884765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档