Spring中有很多不同对象时的处理逻辑?

问题描述 投票:0回答:1

大家帮我回答一下这个问题。过去,当我只有用户和管理员时,我创建了一个 User 表,其中包含用户名、密码、otp、角色等真实信息,以及一个 token 表来存储有关用户登录会话的信息。当用户登录时,我调用 userRepo findByEmail 进行验证。然而,现在我的系统有患者(用户)、医生、实验室工作人员、接待员、收银员和管理员等对象,每个对象都包含单独的信息。那么我应该如何创建一个表来存储对象的身份验证信息和个人信息。我还是想不通,比如当医生登录时,系统会检查账号和密码,然后如何知道谁登录并调用相应的存储库来验证该对象的信息。请帮助我,我正在使用 spring boot 开发一个项目。非常感谢。

java spring spring-boot jpa spring-data-jpa
1个回答
0
投票

将所有附加属性添加到所有用户类型的用户表中将是一个糟糕的设计,因为这样该表中的某些字段对于大多数用户来说是不必要的。患者可能具有诸如上次检查等属性,这对医生等来说毫无意义。

在表中包含 user_type 字段并为每种用户类型建立单独的表会更有意义,因此可以通过 user_type 推断出特定的用户数据。

但是,这也是有问题的,因为人们可能有多种用户类型。例如,医生可能生病了,在这种情况下,该医生在仍然是医生的同时成为患者。因此,为每种特定用户类型创建一个表更有意义,因此,除了您的

users
表之外,您还会有

  • patients
  • doctors
  • lab_staff
  • receptionists
  • cashiers
  • admins

并且每个表都将包含您需要的额外信息,包括

user_id
字段,该字段将是引用相应
foreign key
记录的
users

然后您可以为

QualifiedUser
实现一个类,它将扩展您为用户拥有的类,并为相应的用户提供一个字段。

然后您可以创建类似

Patient
Doctor
LabStaff
Receptionist
Cashier
Admin
等类,所有这些都会
extend
QualifiedUser
,用特殊的覆盖基表用户表,您还可以在
List<QualifiedUser>
User
内有一个
class
字段,如果水合,该字段将包含与给定用户相关的所有合格用户对象。

因此,用户对象的所有方法都将由特定的合格用户扩展继承,如果要针对给定子类以不同的方式执行这些方法以及创建其他字段和方法,您还可以重写某些方法。

© www.soinside.com 2019 - 2024. All rights reserved.