Итак, я создаю веб-приложение на Java с использованием Spring и Hibernate.В приложении пользователь может добавлять очки к объекту, и я хотел бы подсчитать количество очков, отданных за порядок моих объектов.Объекты также хранятся в базе данных.И, надеюсь, сотни людей будут одновременно давать очки объектам.
Но как мне посчитать очки и сохранить их в базе данных одновременно?Обычно я просто имею свойство на моем объекте и просто увеличиваю очки.Но это означало бы, что мне нужно заблокировать данные в базе данных с помощью пессимистичной транзакции, чтобы предотвратить проблемы параллелизма (считывание количества точек, пока другой поток уже находится на полпути для его изменения).Это могло бы сделать мое приложение намного медленнее (по крайней мере, я думаю, что так и будет).
Другим решением было бы хранить количество заданных точек в связанном объекте и сохранять их отдельно в базе данных при подсчете очков.в памяти внутри «небольшого» синхронизированного блока или чего-то еще.
Какое решение оказывает наименьшее влияние на производительность при обработке множества одновременных операций над одними и теми же объектами.Или есть другие подходящие решения?