【问题标题】:Is there a way to detach model object instances from the database?有没有办法从数据库中分离模型对象实例?
【发布时间】:2019-01-09 14:29:21
【问题描述】:

我正在尝试找出一种方法来将 activejdbc 模型从运行在 JVM 上的服务器应用程序通过网络连接到另一个运行 GUI 应用程序的 JVM。 GUI 应用程序无权访问数据库,因为它不在同一台机器上。在 GUI 上,当我尝试通过 setter 设置该模型实例的属性以更新某些字段以将模型发送回服务器进行更新时,我显然会遇到关于没有数据库连接的异常。

我有办法通过重写 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() 之前能够更新模型而无需建立数据库连接。

【问题讨论】:

    标签: activejdbc


    【解决方案1】:

    你有两种选择:

    1. 不要在您的 GUI 应用程序中使用模型。在服务器端,您可以使用Model.toMap() 方法将模型序列化为Maps,并将地图发送到UI。如果您需要进行更新,您可以为同一张地图设置新值,然后将其发送回服务器端,您可以在服务器端使用model.fromMap(map).save() 方法。换句话说,无需通过网络发送模型。

    2. 等到这个问题解决:Add ability to use model classes without connecting to the DB。这项新功能目前正在积极开发中,预计将在几周内完成。它将允许您在没有数据库的情况下将模型从一个 JVM 传递到另一个 JVM,因为 DB 模式将在构建期间而不是在运行时被查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 2012-01-29
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多