在spring数据JPA中以3种不同的方式创建查询

时间:2017-03-13 22:40:46

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

我有创建应用程序的任务,它有休息服务来参加带数据库的CRUD控制器。

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

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

  1. 根据方法名称
  2. 自动创建查询
  3. 创建使用@Query注释定义她的查询(在给予存储库的方法之前)
  4. 使用JpaRepository共享的方法创建查询。
  5. 基本上问题是我不明白这个问题......

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

    1. 这个问题意味着我需要创建3次CRUD或者只需要为我的代码添加2个其他服务吗?
    2. 您能否向我展示此查询在第1点和第2点的样子?
    3. 在第2点我需要使用@query,从这个spring documentation我对这个注释了解很多,但是我不知道是否有可能在没有扩展JpaRepository的界面的情况下创建那些查询? / LI>

1 个答案:

答案 0 :(得分:2)

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?