我想知道 - 一个例子非常感谢 -
如何在Google App Engine for Java中建立关系模型?
- 一对多 - 很多人
我在网上搜索过,我发现Java没有任何指南和教程都是关于Python的。
我从article了解到,在Python中,关系是使用 ReferenceProperty 建模的。但是,我在Javadoc引用中没有发现这个类。
此外,他们在article中讨论了以下内容:
目前,Java用户的工具短缺,主要是由于App Engine的Java平台相对较新。
然而,这是写于2009年。
最后,我最终使用每个实体的祖先路径建模关系。我发现这种方法存在问题并限制了应用程序的可扩展性。
你能指导我到Python的 ReferenceProperty 类的等效Java类吗?或者,您能否举例说明如何使用java数据存储区低级API在AppEngine中建模关系。
提前感谢您的帮助。
答案 0 :(得分:4)
在GAE / J中创建实体之间的关系取决于您使用的db API:
JDO:entity relationships。
JPA:see docs。
Objectify:single-value relationships。
低级API:将一个实体的键作为属性添加到另一个实体:请参阅属性类型.
答案 1 :(得分:1)
只是小费。在定义数据模型时,请考虑最终用户查询并相应地定义数据模型。
例如,我们以租用书籍的商店为例。在传统的应用程序中,您将拥有三个主要实体:
- >书
- >客户端
- >租(解决多对多)
要显示客户租用哪本图书的报告,您可以在Rent表,Book表和客户表上发出查询。
但是,在GAE中不起作用,因为不支持连接操作。
我找到的解决方案(可能是其他解决方案)是使用相同的三个表进行建模,但将书籍和客户端定义嵌入到Rent表中。
这样,显示由谁租用的书籍列表非常快速且便宜。唯一的缺点是,如果例如书的标题发生变化,我必须浏览所有嵌入的对象。但是,与只读查询相比,这种情况多久发生一次。
作为总结,请考虑最终用户查询