java - 如何创建跨服务域模型映射?

标签 java spring spring-boot jpa microservices

我在 Spring Boot 微服务架构中有两个微服务。比方说...

  • 热点服务
  • 附件服务

这两个服务都包含域模型,当然最终位于单独的 JAR 中。

HotSpot 域模型(HotSpot 服务)

@Entity
public class HotSpot {

    @Id
    private Long id;
}

附件域模型(附件服务)

@Entity
public class Attachment {

    @Id
    private Long id;
}

如果您创建新的热点,应该可以添加额外的附件,例如描述图像。因此,热点实体与其附件之间应该存在某种关联/映射。在整体应用程序中,这可以通过使用 JPA 注释 @OneToOne 或类似的内容进行注释来实现。

如何在微服务架构中实现这一目标?两个类都在单独的 JAR/项目中!我考虑过仅将标识符存储为独立于 JPA 的 Long 。 有什么“更好”/其他想法吗?

最佳答案

首先我想问一下你们是如何划分微服务的?将相互依赖的资源分开是没有意义的。在您的示例中,我不确定附件是否可以在没有热点的情况下存在。如果不可能,那么将这两个实体放在两个单独的微服务中绝对没有意义。

假设您的资源应分为两个微服务,您需要为每个资源提供一个 URI。如果资源 A 与资源 B 相关,您只需将 B 的 URI 存储在 A 中,如果您的微服务应该是 RESTful,则在 A 中提供到 B 的具有正确关系的链接。任何像 OneToOne JPA 关系这样的自动系统都不存在。

关于java - 如何创建跨服务域模型映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196382/

相关文章:

java - 使用反射测试内部私有(private)类的方法

java - 在由 Maven 驱动的简单演示应用程序的 JAR 中包含 Postgres 的 JDBC 驱动程序

java - spring.jpa.hibernate.hbm2ddl 和 spring.jpa.hibernate.ddl 的区别

mysql - 无法使用 mysql 启动应用程序 jhipster

java - Spring Boot GCP Data Spanner 延迟问题

java - Eclipse/STS 自动将 "new"更正为 "newEmail"

javascript - 如何从 Javascript 调用 Java 方法(非服务器)

java - 带有包含 URL 的字符串参数的 RequestMapping

spring-boot - 我应该将 Spring Security 与 Spring Boot 项目分开吗

java - Hibernate 5.1.x命名策略(向后兼容Hibernate 4.x)