我对maven依赖项感到困惑:“org.eclipse.persistence.jpa”和“org.hibernate”

时间:2017-04-21 08:31:03

标签: java spring hibernate maven jpa

我有一个使用Maven的Spring MVC项目。 我使用Spring-data-jpa作为我的依赖之一:

  <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.10.5.RELEASE</version>
    </dependency>

Spring-data-jpa提供了api。 因此,我需要添加另一个实现jpa的依赖项。但是,我很困惑:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa</artifactId>
    <version>2.6.4</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.2.2.Final</version>
</dependency>
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.4</version>
</dependency>

什么是eclipse.persistence?和休眠的区别? 请帮忙!

1 个答案:

答案 0 :(得分:2)

Eclipse Persistence(EclipseLink)和Hibernate都是Java Persistence API的实现,每个都有自己的额外功能,通常还有自己的bug。就速度而言,与其他实现相比,它们彼此非常相似。

META-INF/persistence.xml中定义的每个持久性单元中只使用一个。看看你的,在persistence-unit - &gt; provider节点内你会找到所使用的类。
如果它以org.hibernate开头,那么您可以安全地删除eclipse依赖项 如果它以org.eclipse开头,则可以删除hibernate依赖项 如果您有多个持久性单元,则每个持久性单元可以使用不同的实现/提供者。