第三篇,我们来说说JPA规范中的QueryMethod相关类。首先给出类图和继承关系:
很简单,是不是,只有区区两个相关类,QueryMethod及其子类JpaQueryMethod。
QueryMethod类位于spring-data-commons-***.jar包中;而JpaQueryMethod则位于spring-data-jpa-***.jar包中。也就是说,QueryMethod是spring-data包中的通用类;而JpaQueryMethod是spring-data-jpa实现中的类,扩展了通用包中的QueryMethod。
QueryMethod:一个被指定用于运行finder查询的方法的抽象。丰富了标准java.lang.reflect.Method接口以及与具体特定的,必须为这个方法构造的RepositoryQuery信息。
JpaQueryMethod:QueryMethod的JPA具体/特定扩展类。
QueryMethod类持有RepositoryMetadata,Method,Parameters,domainClass等几个私有类变量。其中RepositoryMetadata存储的是repository接口的元数据,类图如下:
Parameters是一个JpaParameters实例,存储的是参数名和参数值的键值对集合,JpaParameters还包含一个内部类JpaParameter,它extends Parameter;
domainClass通常被赋值为Repository接口泛型中定义的Class类,或者方法返回值的Class类;
打开源码,我们惊讶的看到,JpaQueryMethod类也持有一个私有Method类变量,在这里,我谨慎怀疑是开发人员在软件设计时出现的一个小bug,既然父类持有了一个Method类变量,完全可以通过各种手段被子类继承并使用嘛。
JpaQueryMethod类中包含了解析JPA 2.1规范中的支持存储过程配置的若干类变量;以及QueryExtractor查询提取器实现,通过这个设置,可以根据不同的实现,从jpa的Query中提取原始JPA查询字符串,在这里,spring-data-jpa的缺省Persistence Provider供应商实现是hibernate。
在spring-data-jpa中,JpaQueryMethod就是Repository接口中带有@Query注解方法的全部信息,包括注解,类名,实参等的存储类,所以Repository接口有多少个@Query注解方法,就会包含多少个JpaQueryMethod实例被加入监听序列。实际运行时,一个RepositoryQuery实例持有一个JpaQueryMethod实例,JpaQueryMethod又持有一个Method实例。
未完待续。
分享到:
相关推荐
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
java运行依赖jar包
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
这两个模块的 jar 文件,`spring-data-commons-1.7.2.RELEASE.jar` 和 `spring-data-jpa-1.5.2.RELEASE.jar`,包含了它们各自的功能实现和依赖。在实际项目中,将这些 jar 文件添加到类路径,就可以利用 Spring Data...
spring-data-jpa
java运行依赖jar包
### Spring-data-jpa 的核心知识点解析 #### 一、Spring-data-jpa 基本介绍 Spring-data-jpa 是 Spring 家族中的一个重要成员,它主要用于简化基于 Java Persistence API (JPA) 的数据访问层(DAO)的开发工作。...
关于Spring Data JPA的拓展,它允许开发者自定义接口实现,通过编写自己的实现类来覆盖或者增强Spring Data JPA的默认行为。如果需要进行更高级的查询操作或者事务管理,可以实现自定义接口。 在开发过程中,从聚合...
spring data jpa最新版本1.8.0,包含了spring-data-jpa-1.8.0.RELEASE.jar,spring-data-jpa-1.8.0.RELEASE-javadoc.jar以及 spring-data-jpa-1.8.0.RELEASE-sources.jar文档和源代码
该项目是一个基于SpringBoot框架构建的简单网上商城应用,利用了Spring-data-jpa进行数据库操作,Druid作为数据连接池,并采用Thymeleaf模板引擎来处理前端展示。下面将详细介绍这三个核心组件及其在项目中的作用。 ...
java运行依赖jar包
java运行依赖jar包
spring-data-jpa-1.4.2.RELEASE.jar
**Spring Data JPA 简单实例** Spring Data JPA 是 Spring 框架的一个模块,它极大地简化了与 Java 持久层的交互,尤其是与 JPA(Java Persistence API)的集成。通过 Spring Data JPA,我们可以快速地创建数据访问...
java运行依赖jar包
spring-data-jpa-1.5.2
这个名为 "spring-data-jpa-example" 的项目是一个面向初学者的示例,旨在帮助理解并掌握 Spring Data JPA 的基本用法。 1. **Spring Data JPA 概述** - Spring Data JPA 是 Spring Framework 的一个模块,它简化...
spring data jpa的包。spring-data-commons-1.8.0.RELEASE.jar
3. **Repository接口**:Spring Data JPA允许我们定义Repository接口,通过继承`JpaRepository`或`CrudRepository`,无需编写实现即可自动获得CRUD方法。我们可以自定义接口,添加特定的查询方法,例如根据用户名...