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

时间:2013-03-18 21:51:25

标签: java hibernate jpa orm

我是JPA的新手。

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

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

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

  1. 我可以使用EntityManager方法单独使用JPA,而不是使用Hibernate吗?
  2. 请提及一些有用的链接或示例。

    非常感谢回应 感谢。

8 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:4)

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

  1. EclipseLink
  2. ObjectDB

答案 2 :(得分:2)

尽管此线程很旧,但我认为值得将其分解。

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

Hibernate,Eclipse链接:JPA的许多实现中的两个。除了提供JPA规范的基本实现之外,Hibernate和Eclipse Link还提供了其附加功能。您可以根据需要选择

春季数据:

  • 它提供了附加的抽象。
  • 使用Hibernate / Eclipse Link时,您仍然必须编写一些样板代码。通过使用Spring JPA,您可以避免这种情况。
  • 要注意的最重要的事情是,由于Springboot的Opinionated性质,Spring数据默认情况下使用Hibernate。您可以根据需要更改默认行为。
  • 在使用Spring JPA(默认配置)的Springboot项目中运行以下命令时,您将看到正在使用的Hibernate jar。

行家:mvn dependency:tree

等级:gradle dependencies

答案 3 :(得分:1)

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

答案 4 :(得分:1)

你可以单独使用JPA而不使用Hibernate,而且应该知道Hibernate与JPA之间的主要观点,如下所示。

休眠

  1. Hibernate是一个ORM框架,它支持完整的ORM并且还使用JPA功能。
  2. 二级缓存可用,因此性能非常好
  3. 使用NHibernate工具支持.Net
  4. 它生成HQL(Hibernate查询语言)
  5. JPA

    1. JPA是J2EE规范的一部分,它在J2EE 1.5中发布,它将用于java和J2EE
    2. 二级缓存不可用,因此性能不佳。
    3. 不支持.Net
    4. 生成JPQL(Java持久性查询语言)
    5. 像Hibernate这样的持久性提供程序的顶级我们可以使用JPA。

答案 5 :(得分:1)

只有在应用程序服务器已经有JPA实现的情况下,JPA才能在没有JPA提供程序(Hibernate,EclipseLink等)的情况下使用。很可能在教程中你看过在这样的应用服务器上进行的演示。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

否,您不能仅通过JPA执行CRUD操作。由于JPA只是一个规范,因此您需要实现来执行数据库操作。这些实现由Hibernate,EclipseLink,Ibatis等提供。