我想用SPRING ROO在GAE上做一個非常簡單的應用程序。GAE僅適用於BigTable(或其他數據庫)嗎?
我不明白,Hibernate和JPA之間的差值(持久性?),但我想知道什麼建議我(「安全」)應用程序,將在GAE作品...
在其他方面,你推薦我使用BIGTABLE + HIBERNATE + JPA(這是否是最佳實踐)?
Tkx,
我想用SPRING ROO在GAE上做一個非常簡單的應用程序。GAE僅適用於BigTable(或其他數據庫)嗎?
我不明白,Hibernate和JPA之間的差值(持久性?),但我想知道什麼建議我(「安全」)應用程序,將在GAE作品...
在其他方面,你推薦我使用BIGTABLE + HIBERNATE + JPA(這是否是最佳實踐)?
Tkx,
GAE僅適用於BigTable(又名datastore,請參閱Datastore Overview)。它提供了各種各樣的API:從「本地」low-level API到「本地」高級別(JDO和JPA)。介於兩者之間的第三方API是Objectify,Twig等。我建議讓它們看起來很近。最重要的是,你有專門的API,如Blobstore API。
在Hibernate和JPA的情況下,它們都是可以用於大多數關係數據庫的API,但Hibernate也是一種實現--JPA不是。 JPA需要實現,而Hibernate是更常見的一種。當你使用GAE時,你可以完全忘記Hibernate(它不可用)。由於數據存儲的非關係性質,也忘記了大多數JPA功能不受支持。
GAE JPA使用舊版本的DataNucleus實現。這句話是從DataNucleus community page:
谷歌的App Engine(TM)平臺 使用 DataNucleus將-的AppEngine插件提供的Java持久(JDO或JPA) 其BigTable的數據存儲。這個 插件是由Google開發的,並且是 他們的責任。它目前 只適用於版本1.1的 DataNucleus,似乎並沒有積極開發 。
將是一個尖來看看第三方API ...
您將無法在GAE上使用Hibernate。 Hibernate只能在關係數據庫上使用。如果您想使用JPA,那麼使用GAE上提供的實現,並基於DataNucleus。詳情請參閱http://code.google.com/intl/fr/appengine/docs/java/datastore/jpa/overview.html。
請注意,由於GAE數據存儲的侷限性,GAA不可能使用JPA執行所有可能的操作。
JPA是專爲RDBMS數據存儲,而JDO是專爲所有類型的數據存儲。使用JPA對BigTable沒有多大意義 – DataNucleus 2011-05-03 15:07:24