Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 微服务设计中ORM实体的封装_Hibernate_Entity_Microservices - Fatal编程技术网

Hibernate 微服务设计中ORM实体的封装

Hibernate 微服务设计中ORM实体的封装,hibernate,entity,microservices,Hibernate,Entity,Microservices,我想建立一个微服务架构。我正在使用Java技术,如Spring、Hibernate等。在这个场景中,我将实体作为Java类。例如,一个微服务有一个实体,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 p

我想建立一个微服务架构。我正在使用Java技术,如Spring、Hibernate等。在这个场景中,我将实体作为Java类。例如,一个微服务有一个实体,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 object。然后我们设置B的id。当我们需要B时,我们将使用该id获取它




经过长期研究,我找到了解决办法。我正在分享这些链接,以帮助其他人稍后查看此问题

基本上,我们需要为外键添加一列。对于我正在讨论的示例,我们需要添加b_id而不是b object。然后我们设置B的id。当我们需要B时,我们将使用该id获取它




我在这里也面临同样的问题,那么您如何控制一致性呢?在模型中为外键ID设置一个字段似乎不太正确..我也有同样的感觉。然而,这似乎是一个合适的解决方案。为了一致性,使用RabbitMQ这样的消息代理可能是一个好的解决方案。您可以看看这个。有趣的阅读,因此您不应该将外键属性作为b_id,而应该与类a有关系,可能没有完全实现,并确保它与发布订阅事件队列的一致性。。谢谢@Ugurcan!我在这里也面临同样的问题,那么您如何控制一致性呢?在模型中为外键ID设置一个字段似乎不太正确..我也有同样的感觉。然而,这似乎是一个合适的解决方案。为了一致性,使用RabbitMQ这样的消息代理可能是一个好的解决方案。您可以看看这个。有趣的阅读,因此您不应该将外键属性作为b_id,而应该与类a有关系,可能没有完全实现,并确保它与发布订阅事件队列的一致性。。谢谢@Ugurcan!