【问题标题】:Check unique number in create method (DAO)检查创建方法(DAO)中的唯一编号
【发布时间】:2013-10-10 11:44:59
【问题描述】:

这是我的创建方法:

public Person create(Person person) {
    if (person.getId() != null) {
        throw new IllegalArgumentException("Person already has an id.");
    }
    if (person == null) {
        throw new IllegalArgumentException("Person is null.");
    }
    if (person.getUniqueNumber() == null) {
        throw new IllegalArgumentException("Unique number is null.");
    }
    if (person.getUniqueNumber().length() == 0) {
        throw new IllegalArgumentException("Incorrect unique number.");
    }
    entityManager.getTransaction().begin();
    entityManager.persist(person);
    entityManager.getTransaction().commit();
    return person;
}

这些是 Person 属性:

@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable=false, unique=true)
    private String uniqueNumber;
}

如何检查create方法中是否uniqueNumber(如果没有两个人具有相同的唯一编号)?

【问题讨论】:

  • 这是使用 JPA 吗?

标签: java jpa dao crud


【解决方案1】:

你应该

  1. 对数据库中的“uniquenumber”列有唯一约束。这是最简单和最安全的方法。因为它将处理并发。如果您尝试插入具有与现有用户相同的唯一编号的另一个用户,则会引发异常。
  2. 在 create 方法内部有另一个 DAO 调用来检查是否已经存在具有相同唯一编号的用户。可能需要设置正确的事务隔离级别才能正常工作。

我建议采用第一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2010-10-08
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多