내가에서 루프를 변경 (법인의 주석이 확인되지 않음) :스프링 데이터 JPA JpaRepository.save (Iterable ..) - 아니요 javax.validation? 때문에 성능 문제의
MyRepo myRepo; //MyRepo extends JpaRepository
for (final CSVRecord record : csvParser) {
...
myRepo.save(myEntity);
}
에
ArrayList<MyEntity> allMyEntities = new ArrayList<>();
for (final CSVRecord record : csvParser) {
...
allMyEntities.add(myEntity);
}
myRepo.save(allMyEntities); //save(Iterable<S> entities);
그래서 성능이었다 더 나은 예상하지만 예외를 예상하기 때문에 내 테스트가 실패로 엔티티 @Pattern
검증 (ConstraintViolationException) :
@Table
public class MyEntity{
@Pattern(regexp = 'whatever')
private String checkMe
}
이 내가가있어 예외는 javax.validation.ConstraintViolationException: Validation failed for classes [MyEntity] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessag
정보를 for 루프가 저장 어쨌든 (@Transactional
로 표시되어 주위
- 방법 (Iterable을 빨리했다)
- 내가 사용하지 않았다. 저장 있지만 목록에 저장 한 플러시 또는 하나에서 다른 어떤 저장 변형
질문
save(Iterable)
에 대한 유효성 검사가 수행되지 않는 이유가 있습니까?
나의 현재 해결 방법
전화 손으로 검증 그러나 이것은 잘못된 느낌은 :
Set<ConstraintViolation<MyEntity>> violations = validator.validate(myEntity);
if (violations.size() > 0) {throw new ConstraintViolationException(violations);}
좋아, 내 시간의 이익은 이제 작지만 확인, 아무것도 ;-) 무료입니다.
- 단일 저장 변형 13초
- 는
감사합니다. Ok. 그래서 나는 모든 빈에 대한 나의 해결 방법과 단일 검증을해야만한다. '@ Valid'를 사용하면 먼저 새로운 객체를 모두 래핑해야합니다. – timguy