有没有一种方法可以从数据库中分离模型对象实例?

时间:2019-01-09 14:29:22

标签: activejdbc

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

我有一种方法可以通过重写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 :(得分:1)

您有两个选择:

  1. 请勿在GUI应用程序中使用模型。在服务器端,您可以使用Map方法将模型序列化为Model.toMap()并只需将映射发送到UI。如果需要进行更新,则可以将新值设置到相同的映射,然后将其发送回服务器端,在此可以使用model.fromMap(map).save()方法。换句话说,无需跨线发送模型。

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