序列化/反序列化Xodus-dnq实体的正确方法

时间:2018-12-11 13:29:03

标签: serialization kotlin xodus xodus-dnq

例如-我有这个实体:

class XdUser(entity: Entity) : XdEntity(entity) {

    var someName by xdStringProp()
    var someNumber by xdIntProp()
}

从/到json序列化/反序列化的正确方法是什么? 我必须创建仅复制实体字段的数据类,然后将值传播到XdUser吗?还是有其他方法?

1 个答案:

答案 0 :(得分:0)

将XdUser序列化为JSON,您应该确保序列化程序不会处理XdUser#entity和其他可能暴露大量不必要数据的公共链接。反序列化带来了另一个问题,因为应该告知反序列化器如何使用构造函数XdUser(entity: Entity)从json实例化一个类。

从我可能的更好选择中,还有一个其他级别的Rest API。它具有控制公开数据量,控制权限(如果有的话)和实体更新方式的功能。

Rest api级别的实现如下:

open class EntityVO<T: XdEntity>(xdId: String?) {
}

class UserVO(xdId: String?): EntityVO<XdUser>(xdId: String?) {

    var someName by delegateTo(XdUser::someName)
    var someNumber by delegateTo(XdUser::someNumber)

}

delegateTo应该提供委托,该委托将通过xdId查找XdUser,并使用指定的XdUser属性获取/设置值。对于链接/链接,逻辑将更加复杂,但思想可以相同。