gpt4 book ai didi

java - 如何防止在数据库中快速连续创建重复条目? (日本公共(public)事务局)

转载 作者:行者123 更新时间:2023-12-01 13:24:01 25 4
gpt4 key购买 nike

我有一个项目,用户将 JSON 发布到我的 API,然后将其反序列化为实体并保存到数据库。由于运行了一个负载测试工具,该工具连续快速地发布许多请求(使用相同的 API key ,但作为不同的“用户”),我发现我的一些实体在数据库中重复。

尽管我的代码检查数据库中是否已存在该对象,但某些请求同时触发的速度太快,并且它们绕过了检查。

使用实体管理器,我认为每个请求都在其自己的事务下,但我不确定如何“锁定”这些事务。除了将创建代码放入通用 java 同步块(synchronized block)之外,是否有任何方法可以防止这种重复?

谢谢。

最佳答案

如果您使用关系数据库(即 SQL),那么最简单的方法就是让数据库为您做这件事。您和数据库表的唯一约束:

CREATE UNIQUE INDEX unique_author_name ON authors (first_name, last_name);

上面的示例有名为“authors”的数据库表。每个作者都有名字和姓氏。该约束阻止数据库存储 2 个“Mark Twain”。

当尝试添加重复项时,JPA 将抛出 PersistenceException 和 ConstraintViolationException。

希望有帮助:)

关于java - 如何防止在数据库中快速连续创建重复条目? (日本公共(public)事务局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com