spring-boot-starter-data-rest 和 spring-boot-starter-data-jpa 有什么区别

Lea*_*ner 6 java spring spring-boot

我试图了解 Spring Boot 的各种依赖关系。我遇到过其中三个:

  1. spring-boot-starter-数据休息
  2. spring-boot-starter-数据-jpa
  3. spring-boot-starter-数据-jdbc

我想知道三者之间的区别。试了一下网上的文档,说这三者几乎和spring data有关。如何解决困惑?

要在此处添加,我还发现了另一个依赖项 spring-boot-starter-web-services。我认为它同时支持 SOAP 和 REST。这只是我的猜测,等待解释

And*_*uer 13

spring-boot-starter-data-jpa 用于通过 JPA(Java Persistence API)访问数据库

spring-boot-starter-data-jdbc 用于通过 jdbc(Java 数据库连接)访问数据

JPA 和 JDBC 之间的区别在于抽象级别。JDBC 更底层,JPA 更“神奇”

spring-boot-starter-data-rest 用于在 Spring Data 存储库之上提供 Rest 端点。

为此,您只需使用 RepositoryRestResource 注释来注释 Spring 数据存储库,然后直接 Spring MVC 创建 Restful 端点。

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {

  List<Person> findByLastName(@Param("name") String name);

}
Run Code Online (Sandbox Code Playgroud)

如果您执行非常类似于 CRUD(创建、读取、更新、删除)的应用程序,这将非常方便。


duf*_*ymo 5

JPA 的意思是“Java 持久性 API”。它用于使用对象关系映射在关系数据库中查询或保存数据。

REST 的意思是“代表性状态转移”。它是一种利用 HTTP 动词创建 Web 服务的样式,是 SOAP 的更简单的替代方案。

JDBC starter 使用 Spring JdbcTemplate 在关系数据库中查询或保存数据,而不依赖于对象关系映射。您编写 SQL 并要求 JdbcTemplate 类使用 JDBC 在数据库中执行它。

我认为 JPA 和 JDBC 启动器应该是相互排斥的:要么是其中之一,要么是另一个。

仅当您编写 Web 服务时才使用 REST。这些可能会也可能不会在关系数据库中查询或保存数据。如果 REST 服务需要持久性数据,我希望在 pom 中看到 REST 启动器和持久性启动器。

三个截然不同的首发。

您会问为什么 Spring Boot 有一个将两者结合在一起的 REST 数据启动器父级。一句话:方便。