如果使用springbootstarterdatajpa依赖关系并通过org.springframework.data.jpa.repository.jparepository扩展存储库类,那么这是“纯jpa”还是hibernate?有什么区别?
bvhaajcl1#
jpa是一个接口,hibernate是实现。默认情况下,spring使用hibernate作为默认的jpa供应商。如果您愿意,您可以在您的spring项目中使用任何其他的参考实现,例如用于java持久性的eclipselink。
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>
@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/)
2条答案
按热度按时间bvhaajcl1#
jpa是一个接口,hibernate是实现。默认情况下,spring使用hibernate作为默认的jpa供应商。如果您愿意,您可以在您的spring项目中使用任何其他的参考实现,例如用于java持久性的eclipselink。
yvfmudvl2#
从文档中:
springdatajpa的目标是通过将工作减少到实际需要的数量来显著改进数据访问层的实现。作为一名开发人员,您可以编写存储库接口,包括自定义finder方法,spring将自动提供实现。
spring data jpa充当高级api,您必须指定底层持久性提供程序:
1) eclipse链接配置
Maven
Spring装置
2) 休眠配置
Maven
Spring装置
这就是设置hibernate提供程序所需的全部内容。当然,您需要定义数据库中的所有关键数据源属性
示例基于中定义的项目(基于https://github.com/spring-projects/spring-data-examples/)