我想建立一个微服务架构。我正在使用Java技术,例如Spring,Hibernate等。在这种情况下,我将实体作为Java类。例如,A微服务具有A实体,B微服务具有B实体,依此类推。因此,如果A和B之间存在一对多的关系,则需要将其中一个类导入其他类以进行声明。
// in A microservice // need to import class of B like "import com.project.B", but can't // because, it is different project. @Entity class A{ @OneToMany B b; } //in B microservice @Entity class B{ }
但是,由于微服务设计,它们都位于不同的包或服务中。我是否应该创建另一个项目作为共享库,包括其中的所有实体,然后将其包含在每个微服务中?您还有其他解决方案吗?
经过长期研究,我找到了解决方案。我正在共享这些链接,以帮助其他人稍后查看此问题。
基本上,我们需要为外键添加一列。对于我所讨论的示例,我们需要添加b_id而不是B对象。然后我们设置B的ID。当我们需要B时,我们将使用该ID来获取它。
https://www.quora.com/How-do-I-handle-Foreign-Keys-with-a-Microservices-architecture
http://microservices.io/patterns/data/database-per-service.html?