为什么要在Hibernate中使用JPA?

时间:2017-03-30 14:49:19

标签: spring hibernate jpa

我参与了一个安装了Spring,Hibernate和JPA的项目。

我已经阅读了有关Hibernate和JPA的教程,大局是JPA是一个接口,而Hibernate是JPA的实现。

但为什么要使用JPA,它对我有什么帮助? JPA和Hibernate之间有什么区别。首先,我认为POJO类中的注释来自JPA,但不是,它们来自Hibernate Annotations。

所以,最重要的问题是,什么是好的JPA? 谢谢!

2 个答案:

答案 0 :(得分:3)

JPA存在的根本原因在于更大的Java Enterprise规范。越来越需要标准化的ORM API作为JavaEE 5规范的一部分,用于跨Java企业容器的标准化。就是这样 - 这就是为什么JPA存在以及为什么像Hibernate这样的现有ORM包尽力实现它的原因。

净收益很简单;任何Java Enterprise容器(JBoss Wildfly,Weblogic等)都将支持JPA规范,并将内置一个实现。因此,如果您构建应用程序或库并在代码中仅使用JPA API,则甚至不必将Hibernate或任何其他ORM打包到您的应用程序中 - 它将在运行时使用容器提供的任何ORM。

从历史上看,这通常是不可能的,因为您仍然需要添加特定于ORM的配置属性,因此您至少需要了解部署时可用的ORM以迎合它。但是,由于JPA 2.0和2.1大多数常见和不常见的配置选项已经标准化。

长话短说:如果你要部署到JavaEE(或Spring Boot)容器,那么使用JPA只是一个好主意,因为它很容易获得并且是标准的(用于对象关系映射)。

如果您不打算部署到JavaEE容器并且打算在您的应用程序中打包ORM,那么您可以更自由地按照自己的意愿行事。请注意,当他们在稍后的时间移植代码或维护具有混合API使用的代码库时,您不会是第一个踢自己的人。

答案 1 :(得分:2)

Java持久性架构(JPA)是Java对象关系映射解决方案的标准,如Hibernate,TopLink等.Hibernate是JPA的特定实现。

您应该使用JPA注释,这样您就不会被锁定在Hibernate中。

确保您使用JPA a good reason。你可能不需要它。 JDBC可能足以满足您的需求。