1

Google App Engine とそのデータ ストレージでアプリを動作させるには、永続性に関連する Java-ee コードを書き直す必要があります。Java-ee 持続性プロバイダーを使用するときは、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 :)";
    }
  } 
}
4

1 に答える 1

1

エンティティ クラスをクリーンに保ち、永続性に直接関係のないフィールドやメソッドを使用しないようにする正当な理由があるかどうかを知りたいです。

永続化に直接関連しないが、データストアから取得したデータを使用してビジネスを行うメソッドを追加し、実際にRich Domain Model (対Anemic Domain Model ) を実装することに問題はありません。

したがって、手続き型のサービスを使用する代わりに、ビジネス ロジックを豊富なドメイン オブジェクト内に移動します。例 ( Java EE 6 を使用したドメイン駆動設計から抜粋):

@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;
    }
//...
}
于 2010-10-28T01:43:00.937 に答える