Проблема многопоточности с использованием Spring JPA - PullRequest
0 голосов
/ 25 ноября 2018

Я новичок в использовании методов параллельного программирования и задаюсь вопросом, может ли следующий поток вызвать проблемы при выполнении в нескольких потоках.

Пожалуйста, рассмотрите следующую сущность:

@Getter
@Setter
@Table(name = "CAR")
@Entity
public class Car {
    @Id
    private BigInteger id;
    @Column(name = "model")
    private String model;
}

И хранилищеis:

@Service
public interface CarRepository extends JpaRepository<Car, BigInteger>{

}

Я просто хочу знать, находятся ли два потока одновременно в методе синхронизации, есть ли шанс получить DuplicateKeyException?или какое-либо исключение в методе синхронизации ниже из-за многопоточности?

@Transactional
public void sync(final BigInteger id) {

    Car car = new Car(id, ....);

    Car someOtherCar = new Car(....);

    carRepository.save(car);

    carRepository.save(someOtherCar);

    carRepository.flush();

}

Я попытался использовать приведенный ниже код для тестирования, чтобы вставить одни и те же спецификации автомобиля дважды в один поток, и он работает без проблем.

@Transactional
public void sync(final BigInteger id) {

    Car car = new Car(id, ....);
    Car sameCar = new Car(id, ....);

    carRepository.save(car);
    carRepository.save(sameCar);
    carRepository.flush();

}

Пожалуйста, дайте мне знать ваши мысли по этому поводу.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...