【问题标题】:what is the difference between spring-boot-starter-data-rest and spring-boot-starter-data-jpaspring-boot-starter-data-rest 和 spring-boot-starter-data-jpa 有什么区别
【发布时间】:2021-11-11 17:50:23
【问题描述】:

我正在尝试了解 spring boot 的各种依赖关系。 我遇到过其中三个:

  1. spring-boot-starter-data-rest
  2. spring-boot-starter-data-jpa
  3. spring-boot-starter-data-jdbc

我想知道这三者之间的区别。尝试搜索在线文档,其中说这三个几乎与spring数据有关。如何解决混淆?

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

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

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

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

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

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

}

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

【讨论】:

  • 我们如何在 spring 数据存储库中提供 rest 端点。您能否请在您的答案中添加一个示例支持它
  • 这里还有一个问题,spring mvc 如何创建 rest 端点以及用户或服务如何知道端点。哦,是 path="people" 属性吗?我正在考虑同样适用于 Spring Boot 应用程序
【解决方案2】:

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

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

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

我会说 JPA 和 JDBC 启动器应该是互斥的:一个或另一个。

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

三种截然不同的开胃菜。

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

【讨论】:

  • 只是想知道,但是我们有已经支持REST的spring-boot-starter-web,那我们为什么需要spring-boot-starter-data-rest,是为了暴露rest端点在回购。
  • Spring Boot 往往非常固执己见。他们提供 Spring 数据启动器以使创建 REST 数据服务更容易,但他们也有单独的数据和 REST 启动器 b/c,它们可以在其他用例中使用。把它想象成一家既有点菜菜单又有价格固定菜单的餐厅。选择适合您问题的依赖项并继续。
猜你喜欢
  • 2017-11-29
  • 2021-01-18
  • 2021-02-09
  • 2018-08-06
  • 2018-03-01
  • 2014-12-29
  • 2017-02-19
  • 2021-06-12
  • 2020-07-21
相关资源
最近更新 更多