检查Spring Data JPA中的唯一约束

时间:2018-03-04 14:58:47

标签: java spring validation spring-data

我需要验证唯一约束。假设我有这样的验证器:

class Validator {

  Repository repository; // spring data jpa interface

 boolean isUnique(Product p){
  if(repository.exists(p))
    return false;
  }
}

class SomeService {

  Repository repository; // spring data jpa interface
    Validator v;

 void save(Product p){
   if(v.isUnique(p))
      repository.save(p)
 }
}

问题是:当具有相同参数的许多线程调用SomeService.save(Product p)方法时会发生什么?假设10个线程在isUnique()上返回true,然后10个线程正在保存我的实体。如果它对数据库有唯一约束,它会抛出异常吗?为了避免这种情况,我必须将锁定设置为悲观或同步代码?但是如果我对数据库层有这种约束,也许最好处理unique_constrain异常并从我的Validator中删除isUnique方法?你觉得怎么样?

0 个答案:

没有答案