Mysql и java: как работать с несколькими пользователями, когда дело доходит до одновременных обновлений - PullRequest
1 голос
/ 06 февраля 2020

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

Приложение должно поддерживать несколько пользователей (3-4), поэтому я хочу реализовать некоторую защиту, если два пользователя хотят редактировать тот же ряд.

Вещи, которые я изучал, и причины, по которым я не знаю, стоит ли их использовать:

  • Hibernate: я видел несколько потоков, говорящих ORM усложняют ситуацию в будущем
  • Оптимистический / Пессимистический c блокировка: используйте спящий режим или ВЫБЕРИТЕ ... ДЛЯ ОБНОВЛЕНИЯ, которое я прочитал, плохо для параллелизма

Не знаю не знаю, что еще посмотреть.

Спасибо, что прочитали

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете реализовать своего рода блокировку строки в базе данных из вашего приложения, например, добавить столбец «lockedby» с идентификатором для клиента в качестве значения. В вашем приложении, прежде чем предоставить доступ для редактирования строки, вы проверяете этот флаг. Приложение должно повторно захватить блокировку, если программа все еще находится в режиме редактирования, поэтому, если клиент терпит неудачу, строка не остается заблокированной навсегда. Просто идея, но это возможное решение, я думаю.

Другой способ - проверить, изменилась ли строка, прежде чем вы передадите ей обновление. Может быть легко достигнуто путем проверки хэш-суммы содержимого.

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