java - 为什么我们不重写 Spring CRUD Repository 中的方法

标签 java spring spring-boot

我正在研究 Spring 数据,我注意到的一件事是,我们只需创建一个实现 CRUD 存储库的接口(interface)即可执行 CRUD 操作,并且默认情况下,我们可以通过方法名称访问生成的数据库查询。

我认为每当我们实现接口(interface)时,我们都需要提供方法的实现。那么,当我们使用从 CrudRepository 接口(interface)实现的接口(interface)时,为什么不重写任何东西呢?

最佳答案

Spring Data 的目标之一是让数据库访问变得简单,而不需要手动编写大量样板代码。

传统上,开发人员在使用数据库时通常做的事情之一是写入 DAOs (数据库访问对象)与方法,其中每个方法都会执行特定的查询。此类方法通常为 boilerplate code - 简单、重复的代码需要大量的编写和维护工作,并且不包含任何业务逻辑。

当您使用 Spring Data 时,所有这些代码都会自动为您生成。您唯一需要做的就是在存储库接口(interface)中指定您想要执行的查询,然后 Spring Data 会解释方法名称的含义,以自动生成为您执行查询的代码。

这可以节省您大量时间,并有助于您保持自己的代码简洁;它还有助于防止错误。

Spring Data 存储库接口(interface)的实现是在运行时自动生成的。这不是通过生成编译的源代码来完成的 - Spring Data 在幕后直接生成接口(interface)实现的字节码。

关于java - 为什么我们不重写 Spring CRUD Repository 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311019/

相关文章:

java - 无需 ?ln=xxx 从 JS 访问 JSF 资源库

java - MapStruct:对象的映射列表,当对象是从两个对象映射而来的

java - ConcurrentHashMap 陷入无限循环 - 为什么?

java - Spring Integration Aggregator - 丢失消息

java - [Spring][Actuators] 无法处理配置类的导入候选

spring-boot - 在 spring boot 2.1.1 自动配置中没有调用 addInterceptors

mongodb - 使用 2 个数据库时的 Javers ENTITY_INSTANCE_WITH_NULL_ID

java - 在启动 Ubuntu 时运行程序

java - 无法在Spring Cloud Stream kafka中设置kafka属性

java - Heroku 上的 Spring Boot Gradle 应用程序 : Unable to access jarfile