Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
何时在hibernate本机库上使用jpa?它是强制性的吗?_Hibernate_Jpa - Fatal编程技术网

何时在hibernate本机库上使用jpa?它是强制性的吗?

何时在hibernate本机库上使用jpa?它是强制性的吗?,hibernate,jpa,Hibernate,Jpa,JPA支持已经包含在3.4.0GA版本的Hibernate中,但在此之前,Hibernate本机库用于对象持久化。我还在一个项目中使用了hibernate,但没有使用JPAAPI。我有一个问题,我们使用JPA而不是hibernate原生API的真实场景是什么。而且在hibernate中必须使用JPA吗?JPA是标准,hibernate不是。通过坚持标准,您可以使用任何满足标准的供应商,而不仅仅是Hibernate(例如EclipseLink、OpenJPA等) 如果你使用标准,你可以做的一件事就

JPA支持已经包含在3.4.0GA版本的Hibernate中,但在此之前,Hibernate本机库用于对象持久化。我还在一个项目中使用了hibernate,但没有使用JPAAPI。我有一个问题,我们使用JPA而不是hibernate原生API的真实场景是什么。而且在hibernate中必须使用JPA吗?

JPA是标准,hibernate不是。通过坚持标准,您可以使用任何满足标准的供应商,而不仅仅是Hibernate(例如EclipseLink、OpenJPA等)

如果你使用标准,你可以做的一件事就是从一开始改变 提供程序,并期望代码中的工作方式相同。例如,如果您当前的提供商有一个bug,或者停止了现有的服务,使您没有支持,并且无法发展或向API添加新功能

遵循该标准还可以保证您的API能够随着规范的发展而与最新的特性保持同步

组织或项目内部甚至可能存在政治原因:承诺只使用标准技术和API

该标准基于多家供应商提供的愿景和经验而发展。因此,Hibernate团队确实会影响应该向规范中添加哪些新特性,但其他供应商也会影响。因此,您可以期望该标准反映社区的集体经验和观点,而不仅仅是单个供应商的经验和观点


话虽如此,事实是Hibernate本身提供了比JPA所需的更丰富的特性集,并且Hibernate的发展速度更快。此外,它看起来是相当可靠的技术。因此,这些可能是直接使用Hibernate以充分利用其技术并充分利用其潜力的好理由。

谢谢您的回答。因此,这意味着在任何需要持久化技术的项目中,我们仍然只能使用hibernate本机库。我认为,除了使用标准技术的项目承诺之外,我们还可以使用JPA,其优势是,如果将来需要,我们可以用任何更好的JPA提供商来取代一个JPA提供商。JPA有什么缺点吗?JPA唯一的缺点是,使用hibernate原生API可以比使用JPA做得更多。这仅仅是因为hibernate提供了非标准特性,而JPA是每个其他实现都必须支持的通用API——这是一个共同点。但我更愿意在可能的情况下使用JPA,并且仅在必要的情况下使用hibernate特定的功能-学习和使用JPA意味着您可以在以后的项目中利用相同的知识,不使用hibernate。FAQ上说的另一个基于意见的问题不会发布在这个网站上。这个问题根本不是基于意见的。回答这个问题需要专业知识,在这个问题上也需要专业知识。显然其他人都不同意你的观点。