JPA 支持
Spring Integration 的 JPA(Java Persistence API)模块提供了用于执行各种数据库操作的组件。
此依赖项为项目所需:
- Maven
- Gradle
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jpa</artifactId>
<version>7.0.2</version>
</dependency>
compile "org.springframework.integration:spring-integration-jpa:7.0.2"
JPA API 必须通过特定供应商的实现来包含,例如 Hibernate ORM 框架。
提供以下组件:
这些组件可用于通过向目标数据库发送和接收消息,执行select、create、update和delete操作。
JPA入站通道适配器允许您通过使用JPA轮询和检索(select)数据库中的数据,而JPA出站通道适配器则允许您创建、更新和删除实体。
您可以使用 JPA 出站网关将实体持久化到数据库,从而让流程继续执行并运行下游的后续组件。同样地,您也可以使用出站网关从数据库中检索实体。
例如,您可以使用出站网关,该网关在其请求通道上接收一个以userId作为有效载荷的Message,来查询数据库、检索用户实体,并将其传递到下游进行进一步处理。
认识到这些语义差异,Spring Integration 提供了两个独立的 JPA 出站网关:
-
检索出站网关
-
更新出站网关
章节总结
功能
所有JPA组件通过以下方式之一执行其各自的JPA操作:
支持的持久化提供程序
Spring Integration JPA 支持已针对 Hibernate 持久化提供程序进行测试。
Java 实现
每个提供的组件都使用了 o.s.i.jpa.core.JpaExecutor 类,而该类又使用了 o.s.i.jpa.core.JpaOperations 接口的实现。JpaOperations 的操作方式类似于典型的数据访问对象 (DAO),并提供了诸如 find、persist、executeUpdate 等方法。对于大多数使用场景,默认实现 (o.s.i.jpa.core.DefaultJpaOperations) 应该足够。但是,如果需要自定义行为,您可以指定自己的实现。
命名空间支持
在使用 XML 命名空间支持时,底层解析器类会为您实例化相关的 Java 类。因此,您通常无需处理 JPA 适配器的内部工作机制。本节记录了 Spring Integration 提供的 XML 命名空间支持,并展示了如何使用 XML 命名空间支持来配置 JPA 组件。
入站通道适配器
入站通道适配器用于通过 JPA QL 在数据库上执行查询并返回结果。消息负载可以是单个实体或实体列表。以下 XML 配置了一个入站通道适配器:
出站通道适配器
JPA出站通道适配器允许您通过请求通道接收消息。其有效负载既可用作待持久化的实体,也可与标头一起用于JPQL查询的参数表达式中。以下章节将介绍执行这些操作的可能方式。
出站网关
JPA入站通道适配器允许您轮询数据库以检索一个或多个JPA实体。检索到的数据随后将用于启动Spring集成流,并将检索到的数据作为消息负载使用。