6

我想知道 - 例如高度讚賞 -如何在GAEJ中建模實體關係?

如何建模Google App Engine for Java中的關係?

-One到許多
- 許多到許多

我搜索印花布網頁和我沒有發現任何關於Java的所有指南和教程是關於Python。

我從此article瞭解到,在Python中,關係使用ReferenceProperty建模。但是,我在Javadoc參考中沒有發現關於這個類的任何內容。

此外,在本article他們討論了以下內容:

有目前的工具,用於Java的用戶短缺,主要是由於Java平臺的應用程序引擎的相對較新。

然而,這是寫於2009年

最後,我結束了使用建模每個實體的祖先路徑的關係。後來我發現這種方法存在問題並限制了應用程序的可伸縮性。

您可以請我引導到相當於Java的類到Python的ReferenceProperty類?或者,您可以給我舉一個例子,說明如何使用Java數據存儲低級API在AppEngine中建立關係。

在此先感謝您的幫助。在GAE/J實體之間

回答

4

創建關係取決於DB API正在使用:

  1. JDO:entity relationships

  2. JPA:see docs

  3. Objectify:single-value relationships

  4. 低級API:添加一個實體的Key作爲一個屬性到另一個實體:看物業類型.

+0

Thx爲您的答案。可以肯定的是,你的意思如下:entity.setProperty(「property_name」,Key); –

+0

請問另一個問題,使用低級API是否是一個好習慣?在不久的將來,我會面臨項目的可維護性和可擴展性方面的問題嗎? Thx提前爲您提供指導。 –

+0

1.是的,將屬性設置爲一個鍵是可以的。 2.所有高級API(JDO,JPA,Objectify)在底層使用低級API。不會有可擴展性問題。可維護性是另一回事 - 你會寫很多樣板代碼。我更喜歡Objectify。 –

1

只是一個提示。在定義數據模型時,請考慮最終用戶查詢並相應地定義您的數據模型。

例如,我們以租借書籍的商店爲例。在傳統的應用程序,你將有三個主要的實體:

- >圖書

- >客戶端

- >租金(解決了許多一對多)

要顯示客戶租用哪本書的報告,您需要在租賃表,預訂表和客戶表中發出查詢。

但是,在GAE中,由於不支持連接操作而無法工作。

我發現的解決方案(也許是其他解決方案)是使用相同的三個表進行建模,但將書籍和客戶端定義嵌入到租賃表中。

這樣,顯示出誰是非常快速和廉價的租賃書籍列表。唯一的缺點是,如果例如一本書的標題改變了,我必須瀏覽所有的嵌入對象。但是,與只讀查詢相比,發生這種情況的頻率如何。

作爲一個總結,請考慮最終用戶查詢

+0

Thx,我明白了。我在網上發現了其他文章,討論這個想法,證明這是GAE的最佳實踐。 –