如何在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:
-
JDO: 实体关系 。
-
JPA: 见文档 。
-
客观化: 单一价值关系 。
-
低级API:将一个实体的键作为属性添加到另一个实体:请参阅属性类型。
只是一个提示。 在定义数据模型时,请考虑最终用户查询并相应地定义数据模型。
例如,我们以租用书籍的商店为例。 在传统的应用程序中,您将拥有三个主要实体:
– >预订
– >客户
– >租(解决多对多)
要显示客户租用哪本书的报告,您将发出一个连接Rent表,Book表和客户表的查询。
但是,在GAE中不起作用,因为不支持连接操作。
我找到的解决方案(可能是其他解决方案)是使用相同的三个表进行建模,但是将书和客户端定义嵌入到Rent表中。
这样,显示由谁租用的书籍列表非常快速且便宜。 唯一的缺点是,如果例如书的标题发生变化,我必须浏览所有嵌入的对象。 但是,与只读查询相比,这种情况多久发生一次。
总而言之,请考虑最终用户查询