GAE是否仅适用于BigTable(或其他数据库)?

时间:2011-05-01 20:53:34

标签: hibernate jpa google-cloud-datastore spring-roo

我想用SPRING ROO在GAE上做一个非常简单的应用程序。

我不明白Hibernate和JPA之间的区别(持久性?)但我想知道我的('安全')应用程序推荐哪些适用于GAE ......

换句话说,您是否建议我使用BIGTABLE + HIBERNATE + JPA(这是最佳做法)?

TKX,

2 个答案:

答案 0 :(得分:2)

您将无法在GAE上使用Hibernate。 Hibernate只能在关系数据库之上使用。如果要使用JPA,请使用GAE上提供的实现,并基于DataNucleus。有关详细信息,请参阅http://code.google.com/intl/fr/appengine/docs/java/datastore/jpa/overview.html

请注意,由于GAE数据存储的限制,GAE无法实现所有可能的GAA。

答案 1 :(得分:1)

GAE仅适用于BigTable(又名datastore,请参阅Datastore Overview)。它提供了各种API:从“原生”low-level API到“原生”高级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

  

Google App Engine(TM)平台   提供Java持久性(JDO或JPA)   使用a到其BigTable数据存储区   datanucleus-appengine插件。这个   插件是由谷歌开发的   他们的责任。它目前   仅适用于1.1版本   DataNucleus似乎并不存在   积极发展。

请小心查看第三方API ...