Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA实现-哪一个是最好使用的?_Java_Hibernate_Jpa_Toplink_Openjpa - Fatal编程技术网

Java JPA实现-哪一个是最好使用的?

Java JPA实现-哪一个是最好使用的?,java,hibernate,jpa,toplink,openjpa,Java,Hibernate,Jpa,Toplink,Openjpa,我使用了以下JPA实现: 冬眠 Toplink OpenJPA 他们每个人都有自己的长处和短处。我发现Hibernate是这三款软件中最先进的,只是它将自己的一些增强功能与JPA混合在一起,这使得它很难切换到其他提供商。最重要的是,它的查询解析器在解释JPA时要宽松得多。它们使获得正确的库来支持hibernate变得有点困难,因为我发现要获得所有依赖项的正确版本是一项任务 Toplink还行,但有一种感觉是它有点残废,因为Oracle似乎希望您使用/购买它?他们更先进的图书馆。尝试下载它也是一项

我使用了以下JPA实现:

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

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

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


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

    关于这些实现,我有相同的结论

  • OpenJPA是/似乎是有缺陷的

  • Hibernate有大量的库,似乎在不懒惰地加载所有内容方面遇到了麻烦

  • Toplink最终成为我的选择。它不像Hibernate那样灵活,但它可以工作,我不必安装commons日志

  • 我下一步要尝试的是JPOX,它最近被重命名为。

    我个人认为OpenJPA还不够成熟。还有其他更成熟的开源库,我更愿意使用它们。这些是我将依次考虑的:

  • 冬眠。Hibernate已经存在很长时间了,它确实为Java中的ORM铺平了道路。Hibernate的唯一问题是许可问题。这是LGPL许可证,可能会导致一些商业公司不安(出于我在此不赘述的原因)。无论如何,如果LGPL对您来说是一个问题,那么最好避开它

  • 日食。日食的一些背景。Toplink Essentials是Oracle的免费版JPA实现。EclipseLink取自Toplink,Oracle全面的JPA实现。EclipseLink将成为Glassfish v3.0的JPA 2.0提供商,因此看起来一切都将从Toplink Essentials转向EclipseLink。尽管EclipseLink版本只有1.0.2,但该产品已经以其他名称存在了很长一段时间


  • 我现在正在做的一个项目是ToplinkEssentials,但我们计划很快切换到Eclipselink。Hibernate因我前面提到的许可问题而退出。

    OpenJPA被称为Kodo,这是BEA很久以前购买的。Kodo是JDO的实现,现在是JPA。此外,我们非常密集地使用OpenJPA。 因此,我不会说它不成熟。这很好,但是我建议使用Hibernate,即围绕Hibernate的JPA包装

    原因? 1) JPA非常非常类似于Hibernate
    2) 许多职位都有休眠要求。倾向于主流产品更好……基本上,

    EclipseLink(imho)比所有这些都好。objectdb呢?www.objectdb.com或EBean!这一点在2009年得到了回答。现在首选的JPA实现是什么?从Hibernate 3开始,延迟加载是默认的。请提供帮助