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