我是Google Appengine的新手。在学习Google Datastore的基础知识时,我遇到了有关实体的概念,并看到了两种定义和存储它们的方法。
一种方法是使用带注释的POJO来定义实体,并在存储它们之前在Objectify中注册它们。
@Entity
Class Employee{
@Id
private long id;
String firstName;
String lastName;
// add constructors and getters
}
另一个是使用Entity()构造函数来定义实体,然后设置属性:
Entity employee = new Entity("Employee");
employee.setProperty("firstName", "Antonio");
employee.setProperty("lastName", "Salieri");
我的问题是在描述实体时应该采用哪种方式?
答案 0 :(得分:2)
Objectify减少了锅炉板代码的数量,并做了很多有用的事情。
低级数据存储API是您描述的第二个选项,如果您知道如何使用,则需要更多的样板,但可以提供更多控制和更好的性能。
选择取决于您更了解的内容以及您计划实施的项目的详细信息。
答案 1 :(得分:1)
低级API (您的第二个示例)允许您利用数据存储区的NonSQL特性,因为对象实际上并不存储在表中,您可以使用相同类型的实体不同的属性。如果你需要它,这很好,但它确实让你自己实现了很多逻辑。
另一方面Objectify (明确推荐通过JDO和JPA!)允许您轻松地将对象映射到数据存储区实体,并提供大多数开箱即用的查询/编组逻辑。
我的问题是在描述实体时应该采用哪种方式?
这实际上取决于您项目的要求,但根据我的经验,99%的时间您从客体化中获得所需的一切。它专为GAE和它的数据存储区而设计,它的界面非常干净且直截了当。如果你是GAE的新手,想要轻松应对Objectify的概念,那么你将从痛苦的世界中拯救自己:)