我正在使用Spring cloud(微服务),并且已经使用JWT令牌实现了安全性。 在我的安全应用程序中,我具有诸如User,Role和UserRole之类的实体。 因此,每个请求都首先到达ZOOL服务,并调用Authentication服务,然后Authentication服务创建/返回JWT令牌。 另外,我还有另一个需要JWT令牌的微服务休息应用程序(Questions-app)。 在Questions-app中,我有一个Question实体,其中包含authorId字段。
@Entity
@Table(name="QUESTION")
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID", updatable = false, nullable = false)
private long id;
@Column(name = "AUTHOR")
private long authorId;
@Column(name = "TITLE")
private String title;
}
现在,对于我来说还不清楚,是否可以设置 authorId long 类型,还是应该在questions-app中创建User,Role,UserRole实体(仅是AUTH项目的简单副本)然后将“ AUTHOR”列设置为
@OneToOne
@JoinColumn(name="AUTHOR")
private User user;
我知道,在第一个选项中,当我需要在网页上显示问题和用户名时,我应该调用2个服务(一个来自问题应用程序(获取问题),另一个来自身份验证服务(通过作者ID获取用户信息) ) 我想知道什么是最好的做法?
答案 0 :(得分:0)
如果您具有所有这些微服务的公共数据库,并且需要基于问题ID的与用户相关的信息。
然后,您可以直接对User执行@OneToOne
,而不用对用户进行另一个数据库调用。
从您的问题出发,最好选择2个选项。