代码之家  ›  专栏  ›  技术社区  ›  Madmenyo

从数据库创建对象后初始化临时字段?

  •  0
  • Madmenyo  · 技术社区  · 7 年前

    我正在使用Morphia和MongoDB。当获取数据时,使用不带参数的默认构造函数创建对象,然后使用反射初始化字段(Kryo和Jackson等序列化库也这样做)。这样就不可能根据构造函数中字段的值添加代码(因为它们还没有用来自数据库的数据初始化)。我想知道是否有一种方法可以在获取和创建对象后运行附加代码,而不必在之后手动调用方法?原因是我正在存储一个对象的部分数据,并且基于它自己的数据和许多引用,比如初始化附加的瞬态字段。我目前可以提出4个备选方案:

    1. 当对象是 但只要有人(包括我)忘记运行 方法问题开始出现。
    2. 它们在运行时变化很大,因此需要更新 经常。因为每个物体有几十个我不认为
    3. 删除瞬态字段并添加 返回值。这会给我的服务器增加一些额外的工作,但是
    4. 将所有临时字段默认为空,并且每当我需要获取或设置其中一个字段时,我都会计算并在它为空时填充它们。

    我正在使用1。但在辩论我是该用3还是4。不过,如果有更好的方法来运行一些代码后,一个对象被创建,我想知道。

    1 回复  |  直到 7 年前
        1
  •  1
  •   evanchooly    7 年前

    你可以用 @PostLoad 运行您的 initialize()

    推荐文章