Spring boot Jpa:默认休眠?

2022-09-04 06:59:26

如果一个人使用spring-boot-starter-data-jpa依赖关系,并通过org.springframework.data.jpa.repository.JpaRepository扩展存储库类,这是“普通jpa”还是休眠?

有什么区别?


答案 1

JPA是一个接口,Hibernate是一个实现。默认情况下,Spring使用Hibernate作为默认的JPA供应商。如果您愿意,可以在Spring项目中使用任何其他参考实现,例如EclipseLink作为Java持久性。


答案 2

从文档中:

Spring Data JPA旨在通过将工作量减少到实际需要的数量来显着改善数据访问层的实现。作为开发人员,您可以编写存储库接口,包括自定义查找器方法,Spring将自动提供实现。

Spring Data Jpa充当高级API,您必须指定底层的持久性提供程序:

1) Eclipse Link Config

马文

<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>

弹簧设置

@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) 休眠配置

马文

<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>

弹簧设置

@SpringBootApplication
class SimpleConfiguration {}

这就是设置休眠提供程序所需的全部内容。当然,您需要在

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/)


推荐