非常喜欢客体化,尽管仍在努力解决在我的应用中构建数据的最佳方式。我将很快推出一款新应用程序,并且不希望陷入可能无法正常运行的结构,或者执行速度非常慢。
该应用程序将在HRD上,并将具有大量实体类型。为了便于说明,我将组成一些示例实体。假设该应用程序适用于快餐店。每个链都是一个实体(例如McDonalds,Wendy's等)。每个特定的特许经营或地点也将是一个实体。员工,订单,菜单,时间表等也将是实体。
我想最大的问题是如何设置这些实体之间的关系?我通过在每个实体中将数据存储区ID存储为long来存储关系。例如,每个员工实体都有一个long值,该值是他们所在位置的数据存储区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
}
答案 0 :(得分:3)
答案 1 :(得分:0)
Key<Object>
类型安全,Long
不是。在文档中不鼓励使用Long。
参考:https://github.com/objectify/objectify/wiki/Entities#relationships
我鼓励您仔细阅读整个页面,值得花时间。我现在到处都使用Ref<Object>
的类型安全结构。