簡體   English   中英

我需要在Google App Engine中利用JDO的父子關系嗎?

[英]Do I need to be utilizing the parent-child relationships of JDO in Google App Engine?

我希望我的應用程序盡可能地具有可移植性,這樣,如果事實證明Google Cloud Datastore並不是最好的解決方案,那么我可以快速輕松地切換到MySQL,但是互聯網希望我定義的方式存在一些固有的差異我針對這兩種范例的模型。

對於MySQL,我的模型將僅具有一個用於引用相關模型ID的字段。 但是,JDO使我能夠輕松引用實際模型本身。

IE:我認為MySql模型看起來像這樣:

class Parent{
    private String key;
    private String childId;
}

但是JDO將是:

class Parent{
    private String key;
    private Child child;
}

這種差異導致我決定使用第一種方法,並擔心自己查詢實際的Child對象,但是我想知道我是否只是因為某些可能不重要的事情而使自己受苦。 我打算做的事情有特定原因嗎?

我認為App Engine JDO文檔中針對這些情況的術語是,將密鑰存儲在屬性上會形成“未擁有”的關系,而做另一件事就是“已擁有”的關系。 使用數據存儲,擁有的關系形成一個數據存儲實體組,就像將組中的所有實體存儲為一條記錄一樣。

我不喜歡在沒有明確希望能夠以事務方式對組的所有成員進行操作的情況下形成實體組,因為分組會影響並發更新。 如果我只是關聯兩個數據對象,那么我就可以遵循彼此之間的引用,而我不需要事務性,那么我寧願花時間跟隨對第二個實體的引用,而不是創建不必要的實體組希望一切順利。 換句話說,除非我知道我需要交易性,否則我更喜歡無主關系(存儲密鑰)而不是有主關系。

此概念在關系數據庫中沒有等效項。 [感謝Billy Frost的更正。]因此,您可以執行任何一項操作並保留可移植性。

https://developers.google.com/appengine/docs/java/datastore/jdo/relationships

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM