Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在持久性实体中使用与持久性无关的方法和字段_Google App Engine_Coding Style_Jakarta Ee_Persistence_Objectify - Fatal编程技术网

Google app engine 在持久性实体中使用与持久性无关的方法和字段

Google app engine 在持久性实体中使用与持久性无关的方法和字段,google-app-engine,coding-style,jakarta-ee,persistence,objectify,Google App Engine,Coding Style,Jakarta Ee,Persistence,Objectify,我有一个与持久性相关的JavaEE代码,我需要重写它,以使应用程序在Google应用程序引擎及其数据存储上工作。当我使用JavaEE持久性提供程序时,我使用IDE生成持久性实体,并保持它们的原样,以防需要重新生成它们。但是,自动生成应用程序引擎存储的实体类是不可能的,我想知道是否有充分的理由让我保持实体类干净,不使用与持久性不直接相关的字段和方法。如果有必要,我使用objectify作为持久性提供者 下面是一个例子: public class Dog { @Id Long id; @Tr

我有一个与持久性相关的JavaEE代码,我需要重写它,以使应用程序在Google应用程序引擎及其数据存储上工作。当我使用JavaEE持久性提供程序时,我使用IDE生成持久性实体,并保持它们的原样,以防需要重新生成它们。但是,自动生成应用程序引擎存储的实体类是不可能的,我想知道是否有充分的理由让我保持实体类干净,不使用与持久性不直接相关的字段和方法。如果有必要,我使用objectify作为持久性提供者

下面是一个例子:

public class Dog {
  @Id Long id;
  @Transient Integer barkCount;

  public String bark() {
    barkCount++;
    return "woof-woof";
  }

  public String getAgeEstimation() {
    switch(barkCount) {
      case 0:     return "unborn (or very lazy)";
      case 10000: return "this is very old dawg";
      default:    return "you get the idea :)";
    }
  } 
}
我想知道我为什么要保持实体类干净,不使用与持久性不直接相关的字段和方法,是否有什么好的理由

添加与持久性不直接相关但使用从数据存储中检索的数据进行业务处理的方法并没有错,实际上实现了富域模型(VSAN)

因此,不要使用过程式服务,而是将业务逻辑移动到富域对象中。例如(摘自):

@实体
公共类负载{
@OneToMany(级联=级联类型.ALL)
私人物品清单;
@身份证
私人长id;
保护负载(){
this.orderItems=new ArrayList();
}
public int getShippingCosts(){
国际运输成本=0;
对于(OrderItem OrderItem:orderItems){
ShippingCost+=orderItem.getShippingCost();
}
退货运费;
}
//...
}
我想知道我为什么要保持实体类干净,不使用与持久性不直接相关的字段和方法,是否有什么好的理由

添加与持久性不直接相关但使用从数据存储中检索的数据进行业务处理的方法并没有错,实际上实现了富域模型(VSAN)

因此,不要使用过程式服务,而是将业务逻辑移动到富域对象中。例如(摘自):

@实体
公共类负载{
@OneToMany(级联=级联类型.ALL)
私人物品清单;
@身份证
私人长id;
保护负载(){
this.orderItems=new ArrayList();
}
public int getShippingCosts(){
国际运输成本=0;
对于(OrderItem OrderItem:orderItems){
ShippingCost+=orderItem.getShippingCost();
}
退货运费;
}
//...
}
@Entity
public class Load {

    @OneToMany(cascade = CascadeType.ALL)
    private List<OrderItem> orderItems;
    @Id
    private Long id;

    protected Load() {
        this.orderItems = new ArrayList<OrderItem>();
    }

    public int getShippingCosts() {
        int shippingCosts = 0;
        for (OrderItem orderItem : orderItems) {
            shippingCosts += orderItem.getShippingCost();
        }
        return shippingCosts;
    }
//...
}