【问题标题】:Creating queries in 3 different ways in spring data JPA在 Spring Data JPA 中以 3 种不同方式创建查询
【发布时间】:2017-08-04 03:00:33
【问题描述】:

我的任务是创建应用程序,该应用程序有休息服务来处理带有数据库的 CRUD 控制器。

所以: 我需要创建休息服务以引入从存储库(JpaRepository - Spring Data)执行方法的 spring 方法,这些方法在发明实体上创建、读取、更新和删除。

“下载”数据的代码应该有几个版本:

  1. 根据方法名称自动创建查询
  2. 使用@Query 注释创建定义她的查询(在将方法提供给存储库之前)
  3. 使用 JpaRepository 共享的方法创建查询。

基本上问题是我不明白这个问题......

就像您在这里注意到的那样:github 我使用第三点(JpaRepository)创建了这个,但我真的不明白如何在不使用 JpaRepository 的情况下自动创建 CRUD 查询。所以我的问题是:

  1. 这个问题的意思是我需要创建 3 次 CRUD 还是只在我的代码中添加 2 个其他服务?
  2. 你能告诉我这个查询在第 1 点和第 2 点的样子吗?
  3. 在第 2 点中我需要使用@query,从这个spring documentation 我对这个注释了解很多,但我不知道是否可以在没有扩展 JpaRepository 的接口的情况下创建这些查询?

【问题讨论】:

    标签: spring spring-boot spring-data spring-data-jpa jpql


    【解决方案1】:

    JpaRepository 让您有 3 种选择来操作数据:

    • 默认方法(findOne、findAll、...)
    • 实现自定义方法(findUserByFirstname、findByAgeOrderByFirstname、...)
    • 使用@query 注解和 JPQL(如 SQL)实现自定义方法

    所以:

    • 版本 1:您在 JPA 中实现自定义方法
    • 版本 2:使用 @query 注释创建自定义方法
    • 版本 3:您只使用 JPA 默认方法

    在 V1 和 V2 中,您的逻辑将主要在 JPA 实现中。在 V3 中,您的所有逻辑都将在服务上。

    (如果您想了解 JpaRepository 的工作原理: How are Spring Data repositories actually implemented?)

    【讨论】:

    • "在 V1 和 V2 中,您的逻辑将主要在 JPA 实现中。在 V3 中,您的所有逻辑都将在服务上。"你能说我的 github 中哪个类是“JPA 实现”吗?你的意思是在 v1 和 v2 中我需要删除我的 TopicService 并在其他地方执行此逻辑?
    • 如果你能用自定义方法向我展示一个 github 链接或教程,我将非常感激
    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2020-01-23
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多