Одна база данных, редактируемая на нескольких машинах - PullRequest
0 голосов
/ 18 мая 2019

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

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

У меня есть Java-приложение, которое использует Swing в качестве внешнего интерфейса. Он предлагает пользователю ввести свой адрес, спрашивает, хотят ли они обновить / получить рабочий журнал / получить доступ к другой одежде.

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

Затем я подключил его к MySQL через JDBC, чтобы он хранился в простой таблице с адресом в качестве первичного ключа и рабочим журналом в качестве единственного другого столбца.

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

Позже я могу работать с другими слушателями действий и т. Д., Сейчас я не могу понять, как разные машины в разных сетях могут обращаться к одной и той же базе данных через исполняемый файл jar.

Большое спасибо.

* При отправке исполняемого файла jar на другой компьютер он имеет доступ только к * информации, которую они вводят.

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

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Вот подход, который будет работать для вас и позволит вам использовать ваше приложение свинга с наименьшим количеством объектов сопоставления. Я предполагаю, что это ваша цель, так как вы пошли по пути сериализации. Попробуй это: 1. Данные в базе данных должным образом нормализованы до третьей нормальной формы. 2. Запрос JDBC выполняет хранимую процедуру, чтобы полностью денормализовать данные вашего объекта в формате расходных материалов. 3. Хранимая процедура использует команду SQL для JSON. 4. Сопоставьте результирующий набор с вашим Java-объектом, используя GSON. GSON автоматически сопоставит json с вашим объектом. 5. Если конечный пользователь изменит объект, верните его обратно в базу данных и прочитайте снова. Не обновляйте его локально.

Я храню свои объекты в хэш-карте с уникальным идентификатором. Таким образом, когда я читаю объект, потому что он был обновлен, вставка в hashmap с тем же уникальным идентификатором заменяет старую версию новой. Поместите прослушиватель изменений в hashmap, чтобы вы могли обновлять пользовательский интерфейс, когда обновление считывается из базы данных. Используя javafx, вы можете в дальнейшем отобразить списки наблюдения, чтобы графический интерфейс обновлялся автоматически.

Технически это можно сделать и с сериализованным объектом. Просто сохраните идентификатор версии и уникальный идентификатор с сериализованным объектом.

В любом случае, вы, наконец, создадите асинхронную задачу, которая периодически проверяет идентификатор версии в базе данных на предмет объектов в вашей хэш-карте. Если версия изменяется для определенного уникального идентификатора, введите его и выполните отображение / загрузку классов и т. Д.

0 голосов
/ 18 мая 2019

Из вашего объяснения кажется, что вы пытаетесь сделать простое клиент-серверное приложение.

  • Клиент: ваше Java-приложение
  • Сервер: сервер базы данных MySQL (на веб-сервер онлайн).

Итак, все, что вам нужно сделать, это разрешить клиенту установить / получить доступ к приложению Java и использовать одну базу данных.

Если вы не обязаны использовать Java, просто рассмотрите решение PHP, к которому ваши пользователи могут получить доступ с помощью своих веб-браузеров.

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