我想用SPRING ROO在GAE上做一个非常简单的应用程序。
我不明白Hibernate和JPA之间的区别(持久性?)但我想知道我的('安全')应用程序推荐哪些适用于GAE ......
换句话说,您是否建议我使用BIGTABLE + HIBERNATE + JPA(这是最佳做法)?
TKX,
答案 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 ...