gpt4 book ai didi

java - 使用 Hibernate 处理不同的用户类型

转载 作者:行者123 更新时间:2023-11-30 10:33:47 24 4
gpt4 key购买 nike

我正在使用 Spring 框架 + Hibernate 启动一个 Web 应用程序项目。我想在应用程序中模拟两种不同类型的用户:医生患者。他们有一些共同的属性,如姓名、电子邮件、电话号码等,但医生有更具体的属性,如大学编号、专业、研究等。

这是一个没有属性的简化的 E-R 模型(Hibernate 方法)。

enter image description here

如您所见,关系将变为 1 对 1,但其中之一将始终为 null。我也考虑过使用继承,但我从来没有在 Hibernate 中使用过它,所以我不知道哪种方法最好,为什么。哪种方法最简单有效?

谢谢!

最佳答案

@Inheritance 方法只是在持久性上下文中的两个托管类型之间共享公共(public)属性的一种方法。不要忘记 @MappedSuperclass 的作用完全相同,而无需在任何层次结构意义上将两种数据类型耦合在一起。

需要考虑的一件事是,从领域的角度来看,Doctor 是否可以是 Patient,如果可以,从 API 的角度来看,这意味着什么?

是否可以调用 #getPatientDiagnosis(Patient patient) 并将其传递给 Doctor?从代码的角度来看,它可以编译并且是合乎逻辑的,因为您选择了继承,但从领域的角度来看,这是没有意义的。

这就是我经常提倡将域模型与持久性模型分开的原因之一。从数据存储的数据模型角度来看,通常有一些设计决策非常有意义,但这些决策会引入更高抽象的技术债务。

如果是我重用我的实体作为我的领域模型,我会选择 @MappedSuperclass 除非你有其他令人信服的理由在这种情况下使用继承。

关于java - 使用 Hibernate 处理不同的用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com