hibernate如何在没有JPA规范的情况下工作
我当时的项目没有JPA
,但是它使用Hibernate
任何人都可以请解释一下吗?hibernate如何在没有JPA规范的情况下工作
该项目的pom.xml
:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
Hibernate是一个JPA实现,这意味着当你使用JPA,你可以使用Hibernate,EclipseLink的或任何其他实现的,但你会根据JPA规范代码,即使用javax.persistence.*
接口,通常避免使用实现特定的功能(尽管这仍然是可能的)。
如果您直接使用Hibernate进行编码,则只能使用其特定的类(即org.hibernate.*
)和方法,并且不能在任何地方参考javax.persistence
。与类似。您可以编写使用驱动程序特定类的代码(有时但并不常见,您为什么需要有合理的理由),但有些类可以实现JDBC接口(Connection
,ResultSet
,Statement
等),因此您可以编写常规当您切换到不同的数据库时,无需再次学习JDBC代码。
奇怪,我们没有在pom.xml中包含JPA,但是在实体类中我有这个注解import javax.persistence.Entity; –
你不需要单独包含JPA。它包含在Java EE中(当然,Hibernate库也需要实体的副本,因为它实现了它们)。您也可以交换使用许多注释,即Hibernate拥有自己的'@ Entity'注释,但您也可以使用JPA中的那个注释,并且它会相同。 – Kayaman
现在很明显,这是默认情况下。谢谢 –
它可以简单地通过使用非标准的注释/类来工作,请注意,hibernate在JPA被指定之前已经存在很多年了 –
或者你的意思是你在你的项目中使用JPA并且你不知道它是如何实现的因为你没有在你的依赖项中添加JPA API,所以你的意思是? –
在JPA之前说hibernate是什么意思? Hibernate有其自己的规范吗? 实体类具有导入javax.persistence.Entity;这是否意味着我们使用JPA? –