Java 我们可以在没有hibernate的情况下使用jpa吗
我是JPA的新手 据我所知,JPA是一种规范,Hibernate实现JPA,并提供附加功能和JPA方法 但我正在阅读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(
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之间的主要区别,如下所示 冬眠
只有在应用服务器已经有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
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,但这不是“单独”,如果你遵循标准化教程,它可能只是默认实现。