本当に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
}