java - JPA 实现——哪一个最好用?

标签 java hibernate jpa toplink openjpa

我使用了以下 JPA 实现:

  1. hibernate ,
  2. 顶级链接,
  3. OpenJPA

他们每个人都有自己的长处和短处。我发现 Hibernate 是三者中最先进的,只是它将自己的一些增强功能与 JPA 混合在一起,这使得切换到其他提供程序变得困难。最重要的是,它的查询解析器在解释 JPA 时更加宽松。它们使获取正确的库来支持 hibernate 变得有点困难,因为我发现尝试获取所有依赖项的正确版本是一项任务。

Toplink 还可以,但给人的感觉是它有点残缺,因为甲骨文似乎希望你使用/购买?他们更先进的图书馆。尝试下载它也是一项任务,因为您需要通过运行 jar 文件来安装它。我发现它只实现了基本的 JPA 规范。我使用它的原因是 hibernate 使用了很多其他开源项目中常用的库,这些库经常会遇到类加载问题,尤其是在使用 JBoss 时

OpenJPA - 这是迄今为止最好的文档,易于下载和使用,但它似乎有很多错误。也许它只是我的代码,但我发现更高级的用法(例如与 CascadeType.all 设置的 OneToMany 关系)似乎不起作用。诚然,这可能是我的代码出错了,我还没有时间测试一个干净的案例,但是很多这样的事件让我害怕使用它。我真的希望它变得更好。它的错误消息通常对帮助解决问题毫无用处。

人们还使用了哪些其他库,他们更喜欢哪些库,为什么?

最佳答案

我对这些实现有相同的结论。

  1. OpenJPA 是/似乎有问题

  2. Hibernate 有大量的库,并且似乎在 not 延迟加载所有内容方面遇到了问题。

  3. Toplink 最终成为了我的选择。它不像 Hibernate 那样灵活,但它可以工作,我不必安装 commons-logging

我接下来要尝试的是 JPOX,它最近已重命名为 datanucleus .

关于java - JPA 实现——哪一个最好用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/576659/

相关文章:

spring - Spring-boot 是否通过@GeneratedValue 改变了 ids 自动增量的工作方式?

java - Spring + Jboss7 @Transactional 不工作

java - 使用 javafx 获取要播放的 mp3 文件

java - exif信息是如何编码的?

java - JPA2 EntityManager 为空

java - Hibernate 异常 : Unable to find properties . .. 在用 @IdClass 注释的实体中

java - 了解具有多个项目引用的 Hibernate 级联行为

java 日期持久化

java - java EE 中的事务是什么?

java - 在 jpa 2.1 中使用 ManyToMany 时分离的实体