ObjectifyとRequestFactoryを使用して1対多の関係を持つオブジェクトを作成する適切な方法は何ですか?これらのライブラリのドキュメントを読み、 listwidgetやgwtgae2011などのサンプルプロジェクトの数も確認しました。@Embeddedそれらはすべて、1つのエンティティ内にすべてを格納するため、私が望むものではない注釈を使用します。ドキュメントによる別のオプション@Parentは、子クラスでプロパティを使用することです。私の例では(簡単にするためにゲッター/セッターは削除されています)、エンティティがPersonありOrganization、次のように定義されています
@Entity
public class Person extends DatastoreObject
{
private String name;
private String phoneNumber;
private String email;
@Parent private Key<Organization> organizationKey;
}
と
@Entity
public class Organization extends DatastoreObject
{
private String name;
private List<Person> contactPeople;
private String address;
}
これで、1人の個人で組織を永続化するためにドキュメントを正しく理解した場合、最初に組織を永続化し、次にPersonオブジェクトに設定organizationKeyしてから永続化する必要があります。ObjectifyService.factory().getKey(organization)すべての子オブジェクトを手動で反復処理する必要があることはすでに好きではありませんが、RequestFactoryを使用すると、プロキシクラスが存在するため、すべてがより複雑になります。組織クラスとOrganizationProxyクラスをどのように定義しますか-Key<>ありまたはなしで?組織でこのようなものを定義する必要がありますか?
public void setContactPeople(List<Person> contactPeople)
{
for (int i = 0; i < contactPeople.size(); ++i)
{
DAOBase dao = new DAOBase();
Key<Organization> key = dao.ofy().put(this);
contactPeople.get(i).setOrganizationKey(key);
}
this.contactPeople = contactPeople;
}
また、DatastoreからOrganizationとその子をどのようにロードしますか?すべてのPersonを手動で取得し、@PostLoadメソッドでOrganization.contactPeopleに入力する必要がありますか?
JPA / JDOが舞台裏で行うことを行うためだけに、たくさんのメンテナンスコードを書かなければならないようです。私は単にそれを取得しません:(
私は何かが足りないのですか、それともそれを実装する唯一の方法ですか?
事前に回答ありがとうございます!!!