0

私はObjectifyを初めて使用し、コードで最もよく説明されているいくつかの疑問がありました

public class Uid {
@Id private String name; // e-mail id
    private String oauth2_token; // A token 
... // constructors/setters/getters
};

public class Message {
@Id Long msg_id;
private String message;
@Embedded private Uid uid;
... // constructors/setters/getters
};
  1. フィールドを永続化する場合、フィールドを非公開にすることはできますか?
  2. クラスUidには@Idとマークされたフィールドがあり、Uid は別の @Id フィールドを持つクラス Message に @Embeddedます(ただしタイプは異なります。これはまったく許容されますか? はいの場合、警告/例外はありますか?

Thxと乾杯。

4

2 に答える 2

1

1) はい

2) いいえ、組み込みクラスには objectify の @Id がありません。ここのドキュメントを読む必要があります: http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded

埋め込みは、実際には埋め込みクラスを囲んでいるオブジェクトと同じテーブルにフラット化します。appengine の ID は非常に具体的で、データストア キーの作成に使用されます。データストア内のエンティティを実際に表していないクラスに Id を設定しても意味がありません。

objectify における組み込みオブジェクトの考え方は、それらを Java の世界では別個のオブジェクトとして扱いたいが、パフォーマンス上の理由からクエリを実行したいというものです。この種のものは、bigtable での結合の欠如を回避します (とにかく、いくつかのユース ケースで)。囲んでいるクラスに関連して、それらのプロパティを照会できます。

于 2012-05-15T02:50:51.663 に答える