Java 我们可以在没有hibernate的情况下使用jpa吗

Java 我们可以在没有hibernate的情况下使用jpa吗,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,我是JPA的新手 据我所知,JPA是一种规范,Hibernate实现JPA,并提供附加功能和JPA方法 但我正在阅读JPA教程,在那里,使用EntityManagerobject我们可以对数据执行CRUD,而不必使用Hibernate库 有人能告诉我吗 我可以使用EntityManager方法单独使用JPA,而不使用Hibernate吗 请提及一些有用的链接或示例 非常感谢您的回复。 谢谢。您不能只使用JPA,因为它是一个API=),但是有很多JPA实现: 如果您不想使用Hibernate(

我是JPA的新手

据我所知,JPA是一种规范,Hibernate实现JPA,并提供附加功能和JPA方法

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

有人能告诉我吗

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

    非常感谢您的回复。

    谢谢。

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


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

    您是对的JPA is规范。Hibernate、EclipseLink是它的两个实现


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

    您可以单独使用JPA而不使用Hibernate,在此之前,您应该了解Hibernate与JPA之间的主要区别,如下所示

    冬眠

  • Hibernate是一个ORM框架,它支持完整的ORM并使用JPA特性
  • 二级缓存可用,因此性能非常好
  • 它使用NHibernate工具支持.Net
  • 其生成HQL(Hibernate查询语言)
  • JPA

  • JPA是J2EE 1.5中发布的EJB规范的一部分,它将用于java和J2EE
  • 二级缓存不可用,因此性能不好
  • 它不支持.Net
  • 其生成JPQL(Java持久性查询语言)
  • 除了像Hibernate这样的持久性提供者之外,我们还可以使用JPA

  • 只有在应用服务器已经有JPA实现的情况下,JPA才可以在没有JPA提供程序(如Hibernate、EclipseLink等)的情况下使用。您很可能在教程中看到了在这样的应用服务器上执行的演示。

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

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

    虽然这个线程已经很旧了,但我觉得它值得一试

    JPA:这只是一个规范。简单地说。一组接口

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

    弹簧数据:

    • 它提供了额外的抽象
    • 当您使用Hibernate/Eclipse链接时,仍然需要编写一些样板代码。通过使用SpringJPA,您可以避免这种情况
    • 最重要的一点是,由于Springboot的固执己见,SpringData默认使用Hibernate。如果愿意,可以更改默认行为
    • 在使用SpringJPA(默认配置)的Springboot项目中运行以下命令时,您将看到正在使用HibernateJAR
    Maven:
    mvn依赖项:树

    渐变:
    Gradle依赖项


    谢谢你的回复。。。实际上,我想知道entityManager在jpa中的具体用途是什么?我指的是不使用任何hibernate就执行db操作的链接……如果您熟悉hibernate的话。Entitymanager就像hibernate会话一样。根据EntityManager定义,“EntityManager API用于创建和删除持久实体实例,通过主键查找实体,并查询实体。”就像hibernate会话或jdbc connection.ok。。。知道了。。。EntityManager属于Hibernate jpa api jar。。。hibernate会话属于hibernate特定的jar。所以,如果我们想使用jpa,那么我们应该只使用在HibernateJPAAPI中定义的方法,而不是特定于hibernate的方法来获得jpa的好处。。。我说的对吗?有人能用一个词告诉我“是”或“否”吗。我可以在没有hibernate、eclipse link等框架的情况下单独使用jpa吗?@raj240:NO。当您使用Spring数据时,默认情况下,由于Springboots的固执己见,hibernate jar被添加。当然,您可以通过更改配置来自由使用JPA的其他实现,比如EclipseLink。请参考我下面的答案。在我的情况下,我不想使用JPA,因为我在legacy中有一个没有ID的表。那么,有没有办法用JPA对这个表进行CRUD处理呢?你可以使用Mybatis这样的工具,编写你自己的查询,我知道了其中的区别。但是,我仍然不明白,我们如何能够单独使用JPA?因为它只是一个API。你不能单独使用它,我猜“单独”可能只是通过指定引用实现,即EclipseLink,但这不是“单独”,如果你遵循标准化教程,它可能只是默认实现。