我有创建应用程序的任务,该应用程序有剩余服务来参与带有数据库的 CRUD Controller 。
所以: 我需要创建休息服务来引入 spring 方法,这些方法执行存储库(JpaRepository - Spring Data)中的方法,这些方法在发明的实体上创建、读取、更新和删除。
“下载”数据的代码应该有几个版本:
- 根据方法名称自动创建查询
- 创建使用 @Query 注释定义她的查询(在提供给存储库的方法之前)
- 使用 JpaRepository 共享的方法创建查询。
基本上问题是我不明白这个问题......
就像您在这里注意到的那样:github我使用第三点(JpaRepository)创建了这个,但我真的不明白如何在不使用 JpaRepository 的情况下自动创建 CRUD 查询。所以我的问题是:
- 这个问题意味着我需要创建 3 次 CRUD,或者只是向我的代码中添加另外 2 个服务?
- 您能否向我展示此查询在第一点和第二点中的示例?
- 在第 2 点中,我需要使用 @query,从此 spring documentation我对这个注释了解很多,但我不知道是否可以在没有扩展 JpaRepository 的接口(interface)的情况下创建这些查询?
最佳答案
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? )
关于spring - 在 Spring Data JPA 中以 3 种不同的方式创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774750/