JPA 实现——哪一个最好用? [关闭]
Posted
技术标签:
【中文标题】JPA 实现——哪一个最好用? [关闭]【英文标题】:JPA Implementations - Which one is the best to use? [closed] 【发布时间】:2010-10-09 06:22:49 【问题描述】:我使用了以下 JPA 实现:
-
休眠,
顶联,
OpenJPA
他们每个人都有自己的长处和短处。我发现 Hibernate 是三者中最先进的,只是它将自己的一些增强功能与 JPA 混合在一起,这使得切换到其他提供程序变得困难。最重要的是,它的查询解析器在解释 JPA 时更加宽松。它们使获取正确的库来支持休眠变得有点困难,因为我发现尝试获取所有依赖项的正确版本是一项任务。
Toplink 还可以,但给人的感觉是它有点瘫痪,因为甲骨文似乎希望你使用/购买?他们更先进的图书馆。尝试下载它也是一项任务,因为您需要通过运行 jar 文件来安装它。我发现它只实现了基本的 JPA 规范。我使用它的原因是 hibernate 使用了很多其他开源项目中常用的库,这些库经常会遇到类加载问题,尤其是在使用 JBoss 时
OpenJPA - 这是迄今为止最好的文档,易于下载和使用,但它似乎有很多错误。也许它只是我的代码,但我发现更高级的用法(例如与 CascadeType.all 设置的 OneToMany 关系)似乎不起作用。诚然,这可能是我的代码错了,我没有时间测试一个干净的案例,但许多这样的事件让我害怕使用它。我真的希望它变得更好。它的错误消息通常对帮助解决问题毫无用处。
人们还使用了哪些其他库,他们更喜欢哪些库,为什么?
【问题讨论】:
【参考方案1】:我对这些实现有相同的结论。
OpenJPA 是/似乎有问题
Hibernate 拥有大量库,并且似乎在不延迟加载所有内容方面遇到了问题。
Toplink 最终成为了我的选择。它不像 Hibernate 那样灵活,但它可以工作,我不必安装 commons-logging。我接下来要尝试的是 JPOX,它最近已重命名为 datanucleus。
【讨论】:
EclipseLink(恕我直言)比所有这些都好。 objectdb 呢? www.objectdb.com 或 EBean! avaje.org 这在 2009 年得到了回答。现在首选的 JPA 实现是什么? 延迟加载是 Hibernate 3 的默认设置。【参考方案2】:我个人觉得 OpenJPA 还不够成熟。还有其他更成熟的开源库,我宁愿使用它们。这些是我会按顺序考虑的:
休眠。 Hibernate 已经存在了很长时间,并且确实为 Java 中的 ORM 铺平了道路。我对 Hibernate 的唯一问题是许可。它是 LGPL 许可的,这可能会导致一些商业公司感到不安(出于我不会在这里讨论的原因)。无论如何,如果 LGPL 对您来说是个问题,最好避开。
Eclipse 链接。 eclipselink 的一些背景知识。 Toplink Essentials 是 Oracle 的 JPA 实现的免费版本。 EclipseLink 取自 Toplink,Oracle 的完整 JPA 实现。 EclipseLink 将成为 Glassfish v3.0 的 JPA 2.0 提供者,因此看起来一切都从 Toplink Essentials 转移到 EclipseLink。虽然 EclipseLink 版本只有 1.0.2,但该产品以其他名称存在已久。
我正在处理的一个项目目前在 Toplink Essentials 上,但我们计划很快切换到 Eclipselink。 Hibernate 解决了我之前提到的许可问题。
【讨论】:
请帮助***.com/questions/32252715/…【参考方案3】:OpenJPA 被称为 Kodo,这是 BEA 很久以前购买的。 Kodo 是 JDO 的实现,现在是 JPA。此外,我们非常密集地使用 OpenJPA。 因此,我不会说它不成熟。很好但是我建议使用 Hibernate,即 Hibernate 周围的 JPA 包装器。
原因? 1) JPA 与 Hibernate 非常非常相似 2) 许多工作岗位有休眠要求。最好倾向于主流产品...基本上
【讨论】:
以上是关于JPA 实现——哪一个最好用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
RedBeanPHP、NotORM 和 DibiPHP。这些简单的 ORM 中哪一个是最好的? [关闭]