我利用了以下JPA实现:
他们每个人都有自己的优点和缺点。我发现Hibernate是这三个中最先进的,除了它将自己的某些增强功能与JPA混合在一起之外,这使得切换到其他提供程序变得很困难。最重要的是,在解释JPA时,其查询解析器更为宽松。它们使获取支持hibernate的正确库变得有些困难,因为我发现它的任务是尝试获取所有依赖项的正确版本。
Toplink没问题,但由于Oracle希望您使用/购买而感到有些瘫痪。他们更先进的图书馆。尝试下载它也是一个任务,因为您需要通过运行jar文件进行安装。我发现它仅实现了基本的JPA规范。我使用它的原因是hibernate,它使用了许多其他开源项目中常用的库,这些库经常会遇到类库问题,尤其是在使用JBoss时
OpenJPA- 到目前为止,它是最好的文档,可以轻松下载和使用,但似乎有很多问题。也许只是我的代码,但是我发现了更高级的用法,例如与CascadeType.OneOneMany关系。所有设置似乎都行不通。诚然,可能是我的代码错了,我还没有时间测试一个干净的案例,但是类似这样的许多事件使我不敢使用它。我真的希望它会好起来。它的错误消息通常对帮助解决问题毫无用处。
人们还使用其他哪些图书馆?他们更喜欢哪些图书馆?为什么?
对于这些实现,我有相同的结论。
OpenJPA曾经/似乎是越野车
Hibernate有大量的库,并且似乎在 不 延迟加载所有内容方面遇到了麻烦。
我最终选择了Toplink。它不像Hibernate那样灵活,但是它可以工作,我不必安装 commons-logging 。
我接下来要尝试的是JPOX,它最近已重命名为datanucleus。