【发布时间】:2013-12-30 09:41:23
【问题描述】:
我对 Play 框架比较陌生,我尝试按照食谱进行操作,但它似乎已经过时了。无论如何,我只想知道我提到的那些之间是否有很大的不同。
一些教程使用 eBean,而其他教程使用 jpa。我真的很困惑。
【问题讨论】:
标签: java jpa playframework ebean
我对 Play 框架比较陌生,我尝试按照食谱进行操作,但它似乎已经过时了。无论如何,我只想知道我提到的那些之间是否有很大的不同。
一些教程使用 eBean,而其他教程使用 jpa。我真的很困惑。
【问题讨论】:
标签: java jpa playframework ebean
这里回答了同样的问题:https://groups.google.com/forum/#!topic/play-framework/6OR1Osf4AAU
JPA 是许多库实施的标准。 Ebean 使用部分 JPA 标准。 Ebean 期望您使用 JPA 注释来注释您的模型。因此,Ebean 或 JPA 哪个更好的问题是一个奇怪的问题,因为 Ebean 部分是 JPA 实现。我相信 Play 2 也可能提供 Hibernate 集成,它更全面地实现了 JPA 标准,也许这就是您要问的? Hibernate 在 Java 社区中的使用更为广泛。我在尝试 Play 2 时切换到 Ebean 并且没有回头。与 Hibernate 相比,我更喜欢它,因为 Hibernate 有很多棘手的问题,我总是遇到这些问题,而且我还没有发现任何与 ebean 相关的问题。
【讨论】:
在 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 的问题:为什么认为 Ebean 在 2.3 中被 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 示例,我将不胜感激。
【讨论】:
如果您对围绕 Ebean ORM 和 JPA(以及 Hibernate)之间差异的更多技术细节以及 Ebean 最初存在的原因感兴趣,您可以查看:
http://ebean-orm.github.io/architecture/compare-jpa
简而言之有两个主要问题:
Ebean ORM 是 “无会话” ORM(因此不附加/分离语义,没有要管理的 EntityManger 等)
Ebean ORM 的查询语言更适合优化对象图构造(支持部分对象和避免 N + 1 - 你永远不应该有 N + 1无论对象图多么复杂,Ebean 都会出现问题)。
有关 Partial 对象的更多详细信息,请参阅:
http://ebean-orm.github.io/docs/query/partialobjects
更多关于 N+1 的详情请参考:
【讨论】:
EBean 更易于使用。查看 Play 附带的示例应用 ComputerDatabase。 您可能希望在学习 Play 时使用 EBean,因为 EBean 是当前默认设置。
但是,未来是 JPA,因此您可能想尝试一下并学习它。有一个示例 ComputerDatabaseJPA,它也随 Play 提供。
【讨论】:
the future is JPA ...我们将在 10 年后看到,不是吗。在架构上,JPA 存在一些问题……因此没有“流式查询”、“无状态更新”和糟糕的 N + 1 问题。