在create method(DAO)中检查唯一编号

时间:2013-10-10 11:45:00

标签: java jpa dao crud

这是我的创建方法:

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;
}

这些是人物属性:

@Entity
public class Person {

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

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

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

1 个答案:

答案 0 :(得分:1)

你应该

  1. 对DB中的“uniquenumber”列具有唯一约束。这是最简单,最安全的方式。因为它将处理并发。如果您尝试插入另一个与现有用户具有相同序列号的用户,则会抛出异常。
  2. 内部create方法有另一个DAO调用来检查是否已有一个具有相同唯一编号的用户。可能需要设置正确的事务隔离级别才能使其正常工作。
  3. 我建议选择第一种方法。