我们可以使用没有休眠的jpa

Ali*_*Ali 22 java orm hibernate jpa

我是JPA的新手.

根据我的理解,JPA是规范,Hibernate实现JPA并提供添加功能和JPA方法.

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

所以任何人都可以让我知道

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

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

非常感谢回应.
谢谢.

小智 20

你是对的JPA是规范.Hibernate,EclipseLink是它的几个实现.

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

  • 好的...得到它... EntityManager属于Hibernate-jpa-api jar ...而hibernate会话属于Hibernate特定的jar.因此,如果我们想使用jpa,那么我们应该只使用hibernate-jpa-api中定义的方法而不是特定于hibernate的方法来获得jpa的好处......我是否正确? (4认同)
  • 有人可以用一个词告诉我“是”或“否”吗?我可以单独使用 jpa 而不使用任何框架,如 hibernate、eclipse link 等吗? (2认同)
  • @raj240:不。当您使用 Spring Data 时,由于 Springboots 固执己见的性质,默认情况下会添加 Hibernate jar。当然,您可以通过更改配置来自由使用 JPA 的其他实现,例如 EclipseLink。请参考我下面的回答。 (2认同)

And*_*ndy 11

尽管这个线程已经很老了,但我觉得值得将其分解。

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


Ser*_*kov 5

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

  1. Eclipse链接
  2. 对象数据库