spring启动jpa:hibernate作为默认值?

xriantvc  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(350)

如果使用springbootstarterdatajpa依赖关系并通过org.springframework.data.jpa.repository.jparepository扩展存储库类,那么这是“纯jpa”还是hibernate?
有什么区别?

bvhaajcl

bvhaajcl1#

jpa是一个接口,hibernate是实现。默认情况下,spring使用hibernate作为默认的jpa供应商。如果您愿意,您可以在您的spring项目中使用任何其他的参考实现,例如用于java持久性的eclipselink。

yvfmudvl

yvfmudvl2#

从文档中:
springdatajpa的目标是通过将工作减少到实际需要的数量来显著改进数据访问层的实现。作为一名开发人员,您可以编写存储库接口,包括自定义finder方法,spring将自动提供实现。
spring data jpa充当高级api,您必须指定底层持久性提供程序:
1) eclipse链接配置
Maven

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

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

Spring装置

@SpringBootApplication
public class Application extends JpaBaseConfiguration {

    protected Application(DataSource dataSource, JpaProperties properties,
            ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider,
            ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
        super(dataSource, properties, jtaTransactionManagerProvider, transactionManagerCustomizers);
    }

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        return new EclipseLinkJpaVendorAdapter();
    }

2) 休眠配置
Maven

<dependency>
    <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                </exclusion>
        </exclusions>
</dependency>

 <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
</dependency>

Spring装置

@SpringBootApplication
class SimpleConfiguration {}

这就是设置hibernate提供程序所需的全部内容。当然,您需要定义数据库中的所有关键数据源属性

src/main/resources/application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/db
spring.datasource.username = root
spring.datasource.password = root
...

示例基于中定义的项目(基于https://github.com/spring-projects/spring-data-examples/)

相关问题