2011-07-20 64 views
11

我正在接近Gwt + Gae世界。爲什麼客觀化而不是JDO?

我的基本需求是通過Gwt-Rpc線發送我的實體類,而不需要將它們複製到DTO中。

Objectify承諾做得很好。它聲稱它將隱藏所有的「Jdo複雜性」。

我從來沒有使用Jpa或Jdo技術。 所有的複雜性在哪裏?

我的意思是,你能否給我提供一些關於JDO中複雜任務的簡單例子,通過Objectify變得微不足道?

也許有關係?

+1

如果有人有一個樣本項目可以挖掘(也許是寵物店),這可能會有所幫助;但是,我真的沒有看到物品化文檔中的任何內容,這讓我覺得在JDO中它會更容易。我確實瞭解它的需求。當我開始研究應用程序引擎時,我立即希望SQL可用,所以我可以使用像Hibernate或MyBatis這樣的ORM。 – Dave

回答

9

我覺得JDO/JPA很容易在「Hello World」級別上玩。但只要您需要更真實的東西,例如組合鍵,實體之間的乘法關係等,JDO GAE實現就相當複雜,難以掌握,部分原因是由於不支持的功能,解決方法和擴展。 JDO旨在「無處不在」工作,這意味着它是高度抽象的,其性質非常普遍。非常適合可移植性,但這也意味着它可能不像GAE那樣具有獨特數據存儲的特​​定引擎完美匹配。 Datanucleus/JDO/JPA罐子很大(總共約2.3 mb),而Objectify的罐子很小。 JDO/JPA可能會在啓動時執行類路徑掃描以查找並註冊您的實體,這可能會增加加載時間。花費的時間與您項目中的課程數量成正比。

按例子,我覺得在代碼JDO的數量計算/ JPA樣品會出現比很多DAO類的物化簡單,但在一般情況下,物化代碼維護會因爲你不爲工程師更容易」噸需要通過雷區行走在想什麼,你可以在JDO :)

+0

你能告訴我更多關於「複合鍵」和乘法關係,......?你究竟是什麼意思?你能快速寫出一個例子嗎?另外,你有沒有爲項目中的每個實體設定一個物化DAO?在您看來,我如何利用D.Chandler的通用道? http://turbomanage.wordpress.com/2010/02/09/generic-dao-for-objectify-2/ –

1

一個例子的JDO的複雜性,看到一個實體可以有多少不同的狀態是,作爲這可以如何在第一次是壓倒性的一個例子,滾動打破在this page的底部,並查看該狀態圖。 Objectify不需要這樣的狀態圖。

JDO的另一個棘手的部分是幕後發生的所有'魔術',有時會使調試變得困難。當然,這實際上並不神奇,只是字節碼重寫,但這一點非常棘手。

最後,JDO是一個通用的API。它旨在與對象存儲,SQL數據庫一起工作,誰知道還有什麼。某種JDO概念與數據存儲區中實際發生的事情之間的聯繫有時難以看出。 Objectify的API與數據存儲密切配合,使得它更容易理解正在發生的事情。

+2

那麼什麼是Objectify世界中的實體狀態? –

相關問題