如何在GAEJ中建模实体关系?

我想知道 – 一个例子非常感谢 –

如何在Google App Engine for Java中建立关系模型?

– 一对多
– 许多人

我在网上搜索过,我没有发现任何关于Java的所有指南和教程都是关于Python的。

我从这篇文章中了解到,在Python中,关系是使用ReferenceProperty建模的。 但是,我在Javadoc引用中没有发现这个类。

此外,在本文中他们讨论了以下内容:

目前Java用户的工具短缺,主要是由于App Engine的Java平台相对较新。

然而,那是在2009年写的。

最后,我最终使用每个实体的祖先路径建模关系。 我发现这种方法存在问题并限制了应用程序的可伸缩性。

你能指导我到Python的ReferenceProperty类的等效Java类吗? 或者,您能否举例说明如何使用Java数据存储区低级API在AppEngine中建模关系。

在此先感谢您的帮助。

在GAE / J中创建实体之间的关系取决于您使用的db API:

  1. JDO: 实体关系 。

  2. JPA: 见文档 。

  3. 客观化: 单一价值关系 。

  4. 低级API:将一个实体的键作为属性添加到另一个实体:请参阅属性类型。

只是一个提示。 在定义数据模型时,请考虑最终用户查询并相应地定义数据模型。

例如,我们以租用书籍的商店为例。 在传统的应用程序中,您将拥有三个主要实体:

– >预订

– >客户

– >租(解决多对多)

要显示客户租用哪本书的报告,您将发出一个连接Rent表,Book表和客户表的查询。

但是,在GAE中不起作用,因为不支持连接操作。

我找到的解决方案(可能是其他解决方案)是使用相同的三个表进行建模,但是将书和客户端定义嵌入到Rent表中。

这样,显示由谁租用的书籍列表非常快速且便宜。 唯一的缺点是,如果例如书的标题发生变化,我必须浏览所有嵌入的对象。 但是,与只读查询相比,这种情况多久发生一次。

总而言之,请考虑最终用户查询