35

我是 JPA 的新手。

据我了解,JPA 是规范,Hibernate 实现了 JPA 并提供附加功能以及 JPA 方法。

但是我正在阅读 JPA 教程,其中使用EntityManager对象我们可以对数据执行 CRUD,而无需使用 Hibernate 库!

所以谁能告诉我

  1. 我可以使用EntityManager方法单独使用 JPA,而不使用 Hibernate 吗?

请提及一些有用的链接或示例。

非常感谢回复。
谢谢。

4

8 回答 8

27

你是对的 JPA 是一个规范。Hibernate 和 EclipseLink 是它的几个实现。

您必须指定持久性提供程序(Hibernate、EclipseLink)才能使用 JPA 实现。持久性提供程序具有 JPA 规范的实现类。

于 2013-03-18T22:20:10.170 回答
5

你不能只使用 JPA,因为它是一个 API =),但是有很多 JPA 实现:

  1. EclipseLink
  2. 对象数据库
于 2013-03-18T22:15:55.853 回答
4

如果您不想使用 Hibernate(或任何其他 JPA 提供程序),那么您必须通过提供 javax.persistence.spi.PersistenceProvider 接口的实现来实现您自己的提供程序。问题是,你为什么需要重新发明轮子?如果您不喜欢 Hibernate,您可以使用众多其他 JPA-Provider 中的一种来选择

于 2013-03-18T22:16:43.583 回答
4

虽然这个线程很老,但我觉得值得分解。

JPA:这只是一个规范。用更简单的话来说。接口集。

Hibernate、Eclipse Link、Apache OpenJPA: JPA 的众多实现中的一小部分。除了为 JPA 规范提供基本实现之外,Hibernate 和其他实现还提供了它们的附加功能。您可以根据自己的需要选择

春季数据:

  • 它提供了额外的抽象。
  • 当您使用 Hibernate/Eclipse Link 时,您仍然需要编写一些样板代码。通过使用 Spring JPA,您可以避免这种情况。
  • 最需要注意的是,由于 Springboot 的自以为是,Spring 数据默认使用 Hibernate。如果您愿意,可以更改默认行为。
  • 当您在使用 Spring JPA(具有默认配置)的 Springboot 项目中运行以下命令时,您将看到正在使用 Hibernate jar。

马文:mvn dependency:tree

摇篮:gradle dependencies

于 2020-05-24T00:55:31.240 回答
3

仅当应用程序服务器已经具有 JPA 实现时,才可以在没有 JPA 提供程序(即 Hibernate、EclipseLink 等)的情况下使用 JPA。您很可能在教程中看到过在此类应用程序服务器上执行的演示。

于 2016-03-05T17:37:01.917 回答
2

您可以在不使用 Hibernate 的情况下单独使用 JPA,并且之前应该了解 Hibernate 与 JPA 之间的要点,如下所示。

休眠

  1. Hibernate 是一个 ORM 框架,它支持完整的 ORM 并使用 JPA 功能。
  2. 二级缓存可用,所以性能非常好
  3. 它支持 .Net 使用 NHibernate 工具
  4. 它生成 HQL(Hibernate Query Language)

JPA

  1. JPA 是在 J2EE 1.5 中发布的 EJB 规范的一部分,它将用于 java 和 J2EE
  2. 二级缓存不可用,因此性能不佳。
  3. 它不支持.Net
  4. 它生成JPQL(Java Persistence Query Language)
  5. 在像 Hibernate 这样的任何持久性提供程序之上,我们可以使用 JPA。
于 2013-09-14T14:53:05.380 回答
2

你不能单独使用 JPA。JPA 是一种规范,它为对象关系映射和管理持久对象定义了一个 API,您需要一个 JPA 提供者来实现它,例如 Hibernate、EclipseLink。

于 2019-01-23T14:04:11.103 回答
0

不,您不能单独使用 JPA 执行 CRUD 操作。由于 JPA 只是一个规范,因此您需要实现来执行数据库操作。实现由 Hibernate、EclipseLink、Ibatis 等提供。

于 2020-02-08T12:33:00.830 回答