【发布时间】:2014-02-19 14:35:54
【问题描述】:
我有一个项目,用户将 JSON 发布到我的 API,然后将其反序列化为实体并保存到数据库。 由于运行了一个负载测试工具,它快速连续发布许多请求(使用相同的 API 密钥,但作为不同的“用户”),我发现我的一些实体在数据库中重复。
虽然我的代码检查对象是否已存在于数据库中,但一些请求同时触发的速度太快,它们绕过了检查。
使用实体管理器,我认为每个请求都在其自己的事务下,但我不确定如何“锁定”这些事务。除了将创建代码放在通用 java 同步块中之外,还有什么方法可以防止这种重复?
谢谢。
【问题讨论】:
-
你是如何将记录插入数据库的?,em.persist?,@Id 已设置?,这是你的数据库?
标签: java jakarta-ee jpa transactions