我对Jhipster还是陌生的,在理解其某些功能时遇到问题。因此,这是我的问题。
我有以下两个微服务。 Java中的微服务1(MS1)具有以下数据结构:
Lead {
Customer customer;
Deal deal;
}
Customer{
Integer phoneNumber;
etc...
}
Deal{
Integer value;
etc...
}
微服务2(MS2)是JHipster生成的数据库。 该数据库仅具有以下SQL表:
CUSTOMER
LEAD
在微服务1中发生更改时,我从MS1向MS2发送了2个单独的PUT请求。
/customer
API更新客户的请求/deal
API 要成功更新潜在客户,PUT给客户的请求,交易都应该可以。如果更新一个表失败,则所有表都将失败。
因此,我想避免发送2个单独的请求,以避免CUSTOMER请求正常且DEAL请求由于任何原因而失败的情况。
如果可能的话,我想通过诸如/lead
之类的API发送一次交易,该API会覆盖两个表。
在不为LEAD创建额外表的情况下实现此目标的最佳方法是什么? 例如,我应该使用Jhipster生成的图层/服务。 如果可能(但不是必需),我希望避免接触经常重新生成的代码。 (例如,客户,交易)
如果已经存在,请也将我引向文档。它们很难理解,所以我不确定当前是否有专门解决此问题的方法。谢谢。
答案 0 :(得分:0)
从CRUD REST API直接公开JPA实体时,这是一个常见问题。 您的持久性模型不必是您的API模型。
如果2个实体相关并且应该在同一事务中进行更新,则意味着应使用一个原子API请求对其进行更新。
因此,您可以使用DTO定义一个新资源,将两个实体组合在一起,并由新的API公开,您可以手动编写代码(因此无需其他表)。
当您使用微服务体系结构时,MS1和MS2之间可能也会遇到类似的情况,在这里您无法使用事务,那么您就必须实施补救。