我对Play框架比较陌生,我试过跟着这本食谱,但它似乎已经过时了。无论如何我只是想知道我提到的那些之间是否存在很大差异。
有些教程使用了eBean而其他教程使用了jpa。我真的很困惑。
答案 0 :(得分:18)
在Play 2.3中,他们将切换回JPA! Typesafe的开发者倡导者James Ward刚刚告诉我用JPA开始新的项目:https://twitter.com/_JamesWard/status/416977192019456000(或者特别是Hibernate)
以下是Play 2.3的官方路线图: https://docs.google.com/document/d/11sVi1-REAIDFVHvwBrfRt1uXkBzROHQYgmcZNGJtDnA/pub
由于决定切换回JPA背后的一些原因:“[2.3路线图] - DevTeam的问题:为什么在2.3中认为Ebean被JPA取代?” https://groups.google.com/forum/#!searchin/play-framework/2.3/play-framework/7pL-Gq_pj7M/UykJdAC6wyYJ
最后,James Ward在github上为我创建了一个基本的Play JPA示例:https://github.com/jamesward/play-java-jpa
仍需要使用搜索和分页示例进行增强,但这是一个开始。如果有其他人找到一个好的最佳实践Play 2.3 JPA / Hibernate示例,我将不胜感激。
答案 1 :(得分:17)
同样的问题在这里回答:https://groups.google.com/forum/#!topic/play-framework/6OR1Osf4AAU
JPA是许多图书馆实施的标准。 Ebean使用部分JPA标准。 Ebean希望您使用JPA注释注释您的模型。所以更好的问题是Ebean或JPA,因为Ebean部分是JPA实现,所以这个问题很难回答。我相信Play 2可能还提供了一个Hibernate集成,它更全面地实现了JPA标准,也许就是你所要求的? Hibernate在Java社区中使用得更为广泛。我在尝试播放2时切换到Ebean并且没有回头看。我更喜欢Hibernate,因为Hibernate有许多棘手的问题,我总是磕磕绊绊,而且我没有在ebean中找到任何这些问题。
答案 2 :(得分:7)
如果您对Ebean ORM和JPA(和Hibernate)之间差异的更多技术细节感兴趣,那么Ebean存在的原因首先可以让您看看:
http://ebean-orm.github.io/architecture/compare-jpa
简而言之,有两个主要问题:
Ebean ORM “无会话” ORM(所以不附加/分离语义,没有EntityManger来管理等)
Ebean ORM的查询语言更适合优化对象图构建(支持部分对象和避免N + 1 - 你永远不应该有N + 1无论对象图有多复杂,都与Ebean有关。)
有关部分对象的更多详细信息,请参阅:
http://ebean-orm.github.io/docs/query/partialobjects
有关N + 1的更多详情,请参阅:
答案 3 :(得分:3)
EBean使用起来更简单。查看Play附带的示例应用程序ComputerDatabase。 您可能希望在学习Play时使用EBean,因为EBean是当前的默认值。
然而,未来是JPA,所以你可能想要冒险尝试并学习它。有一个示例ComputerDatabaseJPA,也附带Play。