我有一个 LinkedBlockingQueue,我想将所有元素保存到数据库中。我知道我可以一一保存:
ObjectModel om = new ObjectModel();
om.save();
但是,这意味着我必须遍历所有元素并为每个元素建立新的连接。我可以一次插入整个列表吗?
我有一个 LinkedBlockingQueue,我想将所有元素保存到数据库中。我知道我可以一一保存:
ObjectModel om = new ObjectModel();
om.save();
但是,这意味着我必须遍历所有元素并为每个元素建立新的连接。我可以一次插入整个列表吗?
在 play 1.x 中,当服务器收到请求时,play/jpa 将向您的数据库打开一个事务。如果出现任何问题,该事务将自动回滚,否则在向客户端发送响应时自动提交。
因此,即使您遍历您的 JPA 实体并在它们上一个接一个地调用 save(),它们都将在同一个事务中使用相同的连接执行。
我认为它在 Play 2 中的工作方式相同,但老实说,我不知道。
简单的答案不会。一些人将不得不对所有单个对象执行插入查询。
您不必为每个插入创建新连接。您应该在每次迭代中创建一个连接并在同一连接上触发插入。
也许这个问题能让你走得更远。如果你知道如何在底层数据库上做你想做的事,你也可以使用本机查询(你可以通过 EntityManager 创建),我想。