JPA 支持
Spring Integration 的 JPA(Java 持久化 API)模块提供了使用 JPA 执行各种数据库操作的组件。
你需要将这个依赖项添加到你的项目中:
- Maven
- Gradle
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jpa</artifactId>
<version>6.4.2</version>
</dependency>
compile "org.springframework.integration:spring-integration-jpa:6.4.2"
JPA API 必须通过某些供应商特定的实现来包含,例如 Hibernate ORM 框架。
以下组件已提供:
这些组件可以通过向目标数据库发送和接收消息来执行 select
、create
、update
和 delete
操作。
JPA 入站通道适配器允许您通过使用 JPA 从数据库轮询和检索 (select
) 数据,而 JPA 出站通道适配器允许您创建、更新和删除实体。
你可以使用 JPA 的 outbound 网关将实体持久化到数据库,让你可以继续流程并执行下游的其他组件。同样地,你可以使用 outbound 网关从数据库中检索实体。
例如,您可以使用出站网关,它在其请求通道上接收一个以 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 配置了一个 inbound-channel-adapter:
📄️ outbound-channel-adapter
JPA 外发通道适配器允许您通过请求通道接收消息。有效负载可以作为要持久化的实体使用,也可以与标题一起在 JPQL 查询的参数表达式中使用。以下部分介绍了执行这些操作的可能方式。
📄️ 出站网关
JPA 入站通道适配器允许您轮询数据库以检索一个或多个 JPA 实体。检索到的数据随后用于启动一个 Spring Integration 流,该流使用检索到的数据作为消息有效负载。