Есть ли способ отсоединить экземпляры объекта модели от базы данных? - PullRequest
0 голосов
/ 09 января 2019

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

У меня есть способ обойти это путем переопределения метода getMetaModeLocal (), но мне было интересно, есть ли более чистое решение для этого?

Исключение составляют следующие:

Caused by: org.javalite.activejdbc.DBException: Failed to retrieve metadata from DB, connection: 'default' is not available
at org.javalite.activejdbc.Registry.init(Registry.java:133)
at org.javalite.activejdbc.Model.getMetaModel(Model.java:67)

Я ожидаю, что смогу обновить модель без необходимости подключения к базе данных, пока не будет вызван saveIt ().

1 Ответ

0 голосов
/ 12 января 2019

У вас есть два варианта:

  1. Не используйте модели в приложении с графическим интерфейсом. На стороне сервера вы можете сериализовать модели в Map s, используя метод Model.toMap() и просто отправив карту в пользовательский интерфейс. Если вам нужно сделать обновления, вы можете установить новые значения для этой же карты, а затем отправить их обратно на серверную часть, где вы можете использовать model.fromMap(map).save() подход. Другими словами, не нужно отправлять модели по проводам.

  2. Подождите, пока это не будет исправлено: Добавьте возможность использовать классы моделей без подключения к БД . Эта новая функция в настоящее время активно разрабатывается, и ее завершение планируется в течение нескольких недель. Это позволит вам передавать модели из одной JVM в другую без базы данных, поскольку схема БД будет запрашиваться во время сборки, а не во время выполнения.

...