自动计算字段和用户输入值的设计模式

时间:2014-11-26 06:05:07

标签: java spring hibernate java-ee design-patterns

在自定义J2EE框架中,它使用动态计算概念,其中派生的字段很少,并且在运行中计算值并保存到数据库。

如果用户修改通过重新输入其值而计算的字段,则不应该从现在开始自动计算该字段。

是否有可以帮助我的设计模式。

已经存在域POJO类。如果问题太抽象,请告诉我。

2 个答案:

答案 0 :(得分:1)

好的,只是一个想法

http://randomthoughtsonjavaprogramming.blogspot.com/2013/07/formula.html

您可以在POJO第1类中为用户值定义2个字段,并计算一个(使用@Formula注释)。如果用户的值为null,则可以使用计算的值。

class MyEntity {
  @Column(name="the_value")
  Integer userValue;

  @Formula("(select ...)")
  Integer calculatedValue;

  public Integer getRealValue() {
     return userValue==null ? calculatedValue : userValue;
  }
}

因此,当用户设置实际值时,忽略计算的值。但无论如何都会评估计算出的值。

答案 1 :(得分:1)

我们需要一种方法来区分该字段是否已被用户覆盖。实体级别的简单标志可能有所帮助;

class MyEntity {
  Integer userValue;
  boolean isOverridden ;

  public Integer getValue() {
     return if(isOverridden)? userValue: calculate();
  }
}

对于有多个字段的情况,我认为您可以定义自己的DS来保存字段值并使用它来定义Enity。

Class MyEntityValue{
   String name;
   boolean isOveridden;
}