Тип проекта: - Spring-boot JPA project
Привет, у меня ниже Служба отдыха, которая увеличивает число в базе данных.
@RestController
public class IncrementController {
@Autowired
MyNumberRepository mynumberRepository;
@GetMapping(path="/incrementnumber")
public String incrementNumber(){
Optional<MyNumber> mynumber = mynumberRepository.findById(1);
int i = mynumber.get().getNumber();
System.out.println("value of no is "+i);
i = i+1;
System.out.println("value of no post increment is "+i);
mynumber.get().setNumber(i);
MyNumber entity = new MyNumber();
entity.setId(1);
entity.setNumber(i);
mynumberRepository.save(entity);
return "done";
}
}
Сущность выглядит так: -
@Entity
@Table(name = "my_number")
public class MyNumber {
@Id
private Integer id;
private Integer number;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
}
Ниже представлен репозиторий: -
public interface MyNumberRepository extends JpaRepository<MyNumber, Integer>{
}
Служба работает хорошо, когда я вызываю инкрементный номер последовательно, но когда параллельные потоки вызывают инкрементный сервис, я получаю непоследовательные результаты.Как я могу справиться с этой ситуацией?
Также необходимо развернуть приложение в нескольких местах и подключиться к одной и той же БД.т.е. проблема масштабируемости.
Спасибо, Рахул