【问题标题】:How to save a List of objects in Play JPA如何在 Play JPA 中保存对象列表
【发布时间】:2012-05-30 15:39:20
【问题描述】:

我有一个 LinkedBlockingQueue,我想将所有元素保存到数据库中。我知道我可以一一保存:

ObjectModel om = new ObjectModel();
om.save();

但是,这意味着我必须遍历所有元素并为每个元素建立新的连接。我可以一次插入整个列表吗?

【问题讨论】:

  • 您可以遍历所有元素并调用 save()。不过,这不会每次都创建新的连接。正在运行的事务绑定到 HTTP 连接。

标签: java mysql jpa orm playframework


【解决方案1】:

在 play 1.x 中,当服务器收到请求时,play/jpa 将向您的数据库打开一个事务。如果出现任何问题,该事务将自动回滚,否则在向客户端发送响应时自动提交。

因此,即使您遍历您的 JPA 实体并一个接一个地调用它们的 save(),它们都将在同一个事务中使用相同的连接执行。

我认为它在 Play 2 中的工作方式相同,但老实说,我不知道。

【讨论】:

    【解决方案2】:

    简单的答案不会。一些人将不得不对所有单个对象执行插入查询。

    您不必为每个插入创建新连接。您应该在每次迭代中创建一个连接并在同一连接上触发插入。

    【讨论】:

    • 在 MySQL 中没有 JPA 相当于一次插入多行吗?因为能够插入多行将大大加快查询速度,而不是一次插入一行。
    【解决方案3】:

    也许this question 能让你走得更远。如果你知道如何在底层数据库上做你想做的事,你也可以使用原生查询(你可以通过 EntityManager 创建),我想。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2020-03-17
      • 2012-09-26
      • 2011-05-22
      • 2013-04-10
      相关资源
      最近更新 更多