在单个事务中向 JHipster 发送 PUT/GET/POST 请求
Send a PUT/GET/POST request to JHipster in one single transaction
我对 Jhipster 还很陌生,无法理解它的某些功能。所以这是我的问题。
我有以下两个微服务。
微服务 1 (MS1) 在 Java 中具有以下数据结构:
Lead {
Customer customer;
Deal deal;
}
Customer{
Integer phoneNumber;
etc...
}
Deal{
Integer value;
etc...
}
微服务 2 (MS2) 是 JHipster 生成的数据库。
数据库只有以下 SQL tables :
CUSTOMER
LEAD
当微服务 1 发生变化时,我将 2 个单独的 PUT 请求从 MS1 发送到 MS2。
- 首先通过 MS2
中的 /customer
API 更新 CUSTOMER 的请求
- 如果更新成功,则发送请求更新 MS2
中的 DEAL /deal
API
要成功更新 Lead,向客户发出 PUT 请求,交易应该一切正常。如果更新一个 table 失败,则所有更新都应该失败。
因此,我想避免发送 2 个单独的请求,以避免出现 CUSTOMER 请求正常而 DEAL 请求因任何原因失败的情况。
如果可能的话,我想通过 API 发送一个交易,例如 /lead
更新两个 table..
在不为 LEAD 创建额外 table 的情况下实现此目标的最佳方法是什么?
例如,我应该使用 Jhipster 生成一个 layer/service。
如果可能(但不是必需),我想避免接触频繁重新生成的代码。 (例如,客户、交易)
如果文档已经存在,请也给我指点一下。它们很难理解,所以我不确定当前是否有专门解决这个问题的。谢谢。
这是直接从 CRUD REST 公开 JPA 实体时的常见问题 API。
您的持久性模型不需要是您的 API 模型。
如果 2 个实体相关并且应该在同一个事务中更新,这意味着它们应该用一个原子 API 请求更新。
因此,您可以使用 DTO 组合您的 2 个实体定义一个新资源,由您手动编码的新 API 公开(因此不需要额外的 table)。
由于您使用的是微服务架构,因此您在 MS1 和 MS2 之间也可能遇到类似的情况,在这里您无法使用事务,然后您可能必须实施补救措施。
我对 Jhipster 还很陌生,无法理解它的某些功能。所以这是我的问题。
我有以下两个微服务。 微服务 1 (MS1) 在 Java 中具有以下数据结构:
Lead {
Customer customer;
Deal deal;
}
Customer{
Integer phoneNumber;
etc...
}
Deal{
Integer value;
etc...
}
微服务 2 (MS2) 是 JHipster 生成的数据库。 数据库只有以下 SQL tables :
CUSTOMER
LEAD
当微服务 1 发生变化时,我将 2 个单独的 PUT 请求从 MS1 发送到 MS2。
- 首先通过 MS2 中的
- 如果更新成功,则发送请求更新 MS2 中的 DEAL
/customer
API 更新 CUSTOMER 的请求
/deal
API
要成功更新 Lead,向客户发出 PUT 请求,交易应该一切正常。如果更新一个 table 失败,则所有更新都应该失败。
因此,我想避免发送 2 个单独的请求,以避免出现 CUSTOMER 请求正常而 DEAL 请求因任何原因失败的情况。
如果可能的话,我想通过 API 发送一个交易,例如 /lead
更新两个 table..
在不为 LEAD 创建额外 table 的情况下实现此目标的最佳方法是什么? 例如,我应该使用 Jhipster 生成一个 layer/service。 如果可能(但不是必需),我想避免接触频繁重新生成的代码。 (例如,客户、交易)
如果文档已经存在,请也给我指点一下。它们很难理解,所以我不确定当前是否有专门解决这个问题的。谢谢。
这是直接从 CRUD REST 公开 JPA 实体时的常见问题 API。 您的持久性模型不需要是您的 API 模型。
如果 2 个实体相关并且应该在同一个事务中更新,这意味着它们应该用一个原子 API 请求更新。
因此,您可以使用 DTO 组合您的 2 个实体定义一个新资源,由您手动编码的新 API 公开(因此不需要额外的 table)。
由于您使用的是微服务架构,因此您在 MS1 和 MS2 之间也可能遇到类似的情况,在这里您无法使用事务,然后您可能必须实施补救措施。