当前位置: 首页 > 知识库问答 >
问题:

方法:findAll()、save()等是如何在spring-data中实现的?[副本]

仇承志
2023-03-14

我是弹力靴的初学者。我使用方法findAll()和save()分别读取和创建操作,通过扩展CrudRepository(接口)。因此,我找不到任何实现
我的问题是,这些方法到底是在哪里以及如何实现的?

共有1个答案

柳高卓
2023-03-14

仅凭你提供的信息是无法回答你的问题的。这不是坏事。这是一件非常好的事情。这就是接口和Spring最基本的能力--依赖注入--的强大之处。这两个概念背后的全部思想是,您的代码,甚至可能是程序员,对特定接口的实现一无所知。该接口可能有几个或100个独特的实现,其中的每一个都意味着对您的问题至少有一个略微不同的答案。

“回答”您的问题的另一种方法是这样说:“您在代码中与之交互的接口的实现是由您为实际执行该角色而配置的接口的任何具体实现定义的”。

在Spring Boot的情况下,问题的答案通常由应用程序的包依赖项定义,通常通过Maven或Gradle项目文件定义。例如,下面是添加到Gradle项目定义中的行,以使Spring Boot使用JPA和MySQL实现CRUD操作:

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile("mysql:mysql-connector-java:5.1.13")

如果您有一个正在工作的应用程序,那么您的问题的答案很可能是由您的Maven或Gradle文件中的行或您的项目的等价定义中的行决定的,无论您使用什么方法来定义它。如果您没有一个可以工作的应用程序,那么可能您甚至还没有选择一个支持实现,您的问题实际上没有答案。

如果您想要一个更明确的答案,为什么不发布更多关于您的应用程序的细节,比如代码,更重要的是您的Maven或Gradel项目文件。

 类似资料:
  • 我在我的项目中使用Spring Data JPA和Hibernate JPA提供程序。在我的服务中,我有一个方法,它将一个实体保存在数据库中,而不是使用返回的对象,我试图获取关于该实体的更多细节。因此,无法获取详细信息。在日志中,我只看到insert语句,而没有select详细信息。 下面是我的代码: 更新:我从服务和测试中删除了@Transactional annotaion。现在,当我保存一个

  • 我的: 错误: 原因:org。springframework。数据地图。PropertyReferenceException:找不到用户类型的属性findAll 参考-http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html?i

  • 问题内容: 我正在使用spring数据,我的DAO看起来像 在上面的代码中,注释行显示了我的意图。Spring Data是否可以提供内置功能来使用这种方法通过ASC / DESC按某列查找所有记录顺序? 问题答案: 上面的代码应该可以工作。我正在使用类似的东西: 它返回最高级别的10行。 重要提示: 由于有人告诉我很容易错过此答案的关键点,因此需要澄清一下:

  • 我正在使用Spring Data JPA: 使用Spring 4.3.7。释放并Hibernate5.2.9。最终的 当我使用findAll查询时,List返回包含空值。 实体: 注:请注意,问题并不是来自lombock,我已经用getter和setter进行了测试。 仓库: 服务:

  • 我想要的是:跳过spring使用执行的count查询。 我发现有datatype用于这样的UI(基于next),其中不需要总记录/页面,因此不需要计数查询。 我可以将返回类型用于等方法,但是如果我将Slice用于findAll(Pageable),那么它仍然执行计数查询。 任何帮助都很感激。