обновляю данные через sql всё просто находим запись и делаем инкремент
public void setStatisticByIdUrl(Long urId) {
this.jdbcTemplate.update("update statistic set count = count + 1" +
" where url_id = ?", urId);
}
ну да ладно тут понятно, запустил тестирование в многопоточке, создал 10 тысяч задач в 10 потоков , на выходел получил count 10000 т.е. всё правильно, теперь попробуем сделать тоже самое средствами спринга jps и т.д...
@Transactional
public void setStatisticByIdUrl(Long urId) {
Statistic statistic = this.statisticRepository.findFirstByUrlId(urId).orElse(new Statistic());
statistic.setCount(statistic.getCount() + 1);
}
на выходе получаю не 10тысяч а 2000 иногда 3.5 тысяч потокобезопасность отсутствует на прочь, добавление к аннотации serializable и т.д. ничего не меняет - почему ?
Продвижение своими сайтами как стратегия роста и независимости