Spring Boot Jpa:默认休眠?
Posted
技术标签:
【中文标题】Spring Boot Jpa:默认休眠?【英文标题】:Spring boot Jpa: hibernate as default? 【发布时间】:2017-06-13 15:49:33 【问题描述】:如果使用 spring-boot-starter-data-jpa 依赖并通过 org.springframework.data.jpa.repository.JpaRepository 扩展存储库类,是这样'plain jpa' 还是休眠?
有什么区别?
【问题讨论】:
JPA 是规范,Hibernate 是规范的实现。 Spring Data JPA 使用 Hibernate 作为 JPA 默认实现。 所以没有'plain JPA'这样的东西吗?是否默认使用休眠? “JpaRepository”中的“JPA”不是对使用什么 API 的足够明确的答案吗? FWIW JpaRepository 也不是 JPA API 的一部分,它是 Spring 的 API 【参考方案1】:JPA 是一个接口,而 Hibernate 是实现。默认情况下,Spring 使用 Hibernate 作为默认的 JPA 供应商。如果您愿意,可以使用任何其他参考实现,例如EclipseLink 用于 Spring 项目中的 Java 持久性。
【讨论】:
【参考方案2】:来自文档:
Spring Data JPA 旨在显着改进 通过将工作量减少到数据访问层 实际需要。作为开发人员,您编写存储库接口, 包括自定义查找器方法,Spring 将提供 自动执行。
Spring Data Jpa 充当高级 API,您必须指定底层的 Persistance Provider:
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>
弹簧设置
@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>
弹簧设置
@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/)中定义的项目
【讨论】:
以上是关于Spring Boot Jpa:默认休眠?的主要内容,如果未能解决你的问题,请参考以下文章
休眠验证不使用 Spring Boot LocalValidatorFactoryBean
spring-data-jpa 和 spring-boot-starter-data-jpa 的区别