我使用了以下 JPA 实现:
- 冬眠,
- 顶联,
- OpenJPA
他们每个人都有自己的长处和短处。我发现 Hibernate 是三者中最先进的,只是它将自己的一些增强功能与 JPA 混合在一起,这使得切换到其他提供程序变得困难。最重要的是,它的查询解析器在解释 JPA 时更加宽松。它们使获得正确的库来支持休眠变得有点困难,因为我发现尝试获得所有依赖项的正确版本是一项任务。
Toplink 还可以,但给人的感觉是它有点残缺,因为甲骨文似乎希望你使用/购买?他们更先进的图书馆。尝试下载它也是一项任务,因为您需要通过运行 jar 文件来安装它。我发现它只实现了基本的 JPA 规范。我使用它的原因是 hibernate 使用了很多其他开源项目中常用的库,这些库经常会遇到类加载问题,尤其是在使用 JBoss 时
OpenJPA - 这是迄今为止最好的文档,易于下载和使用,但它似乎有很多错误。也许它只是我的代码,但我发现更高级的用法(例如与 CascadeType.all 设置的 OneToMany 关系)似乎不起作用。诚然,这可能是我的代码错了,我没有时间测试一个干净的案例,但许多这样的事件让我害怕使用它。我真的希望它变得更好。它的错误信息通常无助于解决问题。
人们还使用了哪些其他库,他们更喜欢哪些库,为什么?