【问题标题】:Spring boot jpa: How to Map multiple entity class with same database tableSpring boot jpa:如何使用相同的数据库表映射多个实体类
【发布时间】:2019-05-08 11:09:16
【问题描述】:

我在 Spring Boot 中使用带有 Restful 服务的微服务,所以我有

  1. 身份验证服务应用
  2. 主要服务应用

身份验证服务中的实体

public class User implements Serializable {
   private int userId;
   private String firstname;
   private String lastname;
   private String email;
   private String password;
}

我需要使用 userId 在我的 UI 页面中显示用户名。

对于 Main Service 应用程序中的每个 UI,我无法通过一次休息调用来获取用户名。

所以在这种情况下,我希望在两个服务中都有用户实体,它将指向同一个数据库用户表,Authentication Service app 可以完全访问用户表,如添加用户、登录、删除用户,但在 Main Service app 我想单独使用 userId 获取用户名。

我在主服务应用程序中设计用户实体时感到困惑。

  1. 我需要在主服务应用的用户实体中具有哪些字段
  2. 我可以有Id字段吗(我觉得不需要)?

【问题讨论】:

  • 您可以在 Dao 层或通过 JPA 存储库调用来拥有完整的功能,只是在 MainService 中不提供 add/login/delete 的实现。

标签: java spring spring-data-jpa microservices application-design


【解决方案1】:

我认为,您应该实现与数据库中的用户表相同的用户实体类。您认为,现在没有必要,但将来您可能会需要它。

顺便说一句,您希望允许写入、读取、删除、更新操作。在身份验证应用程序中,只想允许在主服务中进行读取操作。我认为,您应该在您的应用程序中都实现身份验证机制。

【讨论】:

    【解决方案2】:

    从 Authentication Service 应用公开一个 Rest 服务以从 Main Service App 获取用户数据,在 Main Service 应用程序中创建一个新的 DTO(数据传输对象)类 UserDTO 包含您实际需要的字段,然后转换 UserEnitity 类到 UserDTO 类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2021-10-16
      • 2021-09-03
      • 2010-11-03
      • 2022-01-09
      相关资源
      最近更新 更多