1

本当にobjectifyが好きですが、アプリでデータを構造化するための最良の方法はまだ苦労しています。間もなく新しいアプリをリリースする予定ですが、正しく機能しない可能性のある構造や、パフォーマンスが非常に遅い構造にとらわれたくありません。

アプリはHRDにあり、多数のエンティティタイプがあります。説明のために、いくつかのエンティティの例を作成します。アプリがファーストフードレストラン向けであるとします。各チェーンはエンティティになります(たとえば、マクドナルド、ウェンディーズなど)。それぞれの特定のフランチャイズまたは場所もエンティティになります。従業員、注文、メニュー、タイムシートなどもエンティティになります。

最大の質問は、これらのエンティティ間の関係をどのように設定するかということだと思います。私は、各エンティティにデータストアIDを長く保存することで、関係を保存してきました。たとえば、各従業員エンティティは、彼らが働いている場所のデータストアIDと、彼らがメンバーになっているチェーンの長い値を持ちます。

この構造を使用すると、次のようなステートメントを使用して、特定のレストランからのすべての注文を照会できます。

  Long restaurantId =restaurant.getId();
  Query<Order> q=ofy.query(Order.class).filter("location", resturantId);

この方法でデータストア/オブジェクト化を使用することに問題があるかどうかだけ興味があります。どんな入力でも素晴らしいでしょう!私は小規模で同様のものを使用してきましたが、うまく機能しているようです。理想的には、最も効率的な構造が必要ですが、これにはいくつかのテストが必要になる可能性があります。ただし、アプリがデプロイされると、変更が非常に困難になる可能性があります...

@Entity
public class Chain {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String name;
  private String type;

  //getters & setters, etc
  }

@Entity
public class Location {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)

  private String address;
  private String owner;
  private String phoneNumber;

  //getters & setters, etc
  }

@Entity
public class Employee {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long location;  //which location the employee works for
  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)

  private String name;
  private String position;

  //getters & setters, etc
  }

@Entity
public class Order {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)
  private Long location;
  private Long employee; //employee that took order

  private Order order;
  private String time;

   //getters & setters, etc
   }
4

2 に答える 2

3

これは標準的な方法です。出て行け!

Objectifyは素晴らしいです-私たちはそれを約6か月間使用しており、非常に満足しています。

于 2011-10-28T23:39:29.560 に答える
0

Key<Object>タイプセーフですが、そうでLongはありません。ドキュメントでは、Longの使用は推奨されていません。

参照:https ://github.com/objectify/objectify/wiki/Entities#relationships

そのページ全体を読むことをお勧めします。時間の価値があります。Ref<Object>私は今、どこでも使用できるタイプセーフな構造を持っています。

于 2016-04-27T03:12:00.377 に答える