【问题标题】:How are the methods: findAll(), save() etc implemented in spring-data? [duplicate]spring-data 中如何实现方法:findAll()、save() 等? [复制]
【发布时间】:2019-07-31 16:57:17
【问题描述】:

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

【问题讨论】:

    标签: spring-boot spring-data


    【解决方案1】:

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

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

    对于 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 项目文件。

    【讨论】:

    • 我只注意到@Strelok 关于存在相同或相似性质的现有问题的评论。那里的答案支持了我所说的,并提供了更多关于可能实现你的 CRUD 接口的细节。 - 我建议您查看该帖子,我希望它能比我更全面地回答您的问题。
    • 是的,可以有 100 个独特的实现。但 findAll() 将是一个 select * from 查询。所以我只想查看实现此类代码的一般实现,而不是特定于我的项目。
    • 只有在支持实现是 SQL 时才会是这样的查询。没有理由必须如此。在定义支持实现之前,没有地方可以查找“select * from ”。 - 您的支持实现可以是 NoSql 数据库。您的支持实现可能是 Java HashMap。 - 即使您确定要使用 MySql,也有不同的方法。看看 Spring JPA。这会让你开始。这是最标准的支持实现。
    • 看看这个:spring.io/projects/spring-data-jpa。查看左侧,您将看到 Spring Data 接口背后的所有内容的列表。如果你想要一个 SQL 后端,这个文档是开始的地方。通过教程设置基于 MySql 的 JPA 数据库。然后,您将能够找到支持查询。我不知道他们具体在哪里,但是你会问一个关于找到他们的具体问题。
    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2014-10-17
    • 2020-06-09
    • 2023-01-30
    • 2016-04-13
    相关资源
    最近更新 更多