何时使用POJO在google appengine中定义实体?

时间:2015-04-04 17:10:56

标签: java google-app-engine google-cloud-datastore

我是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");

我的问题是在描述实体时应该采用哪种方式?

2 个答案:

答案 0 :(得分:2)

Objectify减少了锅炉板代码的数量,并做了很多有用的事情。

低级数据存储API是您描述的第二个选项,如果您知道如何使用,则需要更多的样板,但可以提供更多控制和更好的性能。

选择取决于您更了解的内容以及您计划实施的项目的详细信息。

答案 1 :(得分:1)

低级API (您的第二个示例)允许您利用数据存储区的NonSQL特性,因为对象实际上并不存储在表中,您可以使用相同类型的实体不同的属性。如果你需要它,这很好,但它确实让你自己实现了很多逻辑。

另一方面

Objectify (明确推荐通过JDO和JPA!)允许您轻松地将对象映射到数据存储区实体,并提供大多数开箱即用的查询/编组逻辑。

  

我的问题是在描述实体时应该采用哪种方式?

这实际上取决于您项目的要求,但根据我的经验,99%的时间您从客体化中获得所需的一切。它专为GAE和它的数据存储区而设计,它的界面非常干净且直截了当。如果你是GAE的新手,想要轻松应对Objectify的概念,那么你将从痛苦的世界中拯救自己:)