Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继承策略_Java_Jpa_Orm_Uml_Class Diagram - Fatal编程技术网

Java 继承策略

Java 继承策略,java,jpa,orm,uml,class-diagram,Java,Jpa,Orm,Uml,Class Diagram,我知道在java中处理继承的策略不止一种,最好的性能是通过单个表实现的 下面的架构是一个类图: 对不起,模式是法语。在不涉及细节的情况下,personne指个人、雇主、业主、当地承租人和康吉假日 我如何从这个模式中得出我应该使用的最佳继承策略?你确定吗? 在回答您的具体问题之前,我可以批评一下您的继承逻辑吗 您的基本阶层人员衍生为房东、租户和雇主。不幸的是,事实上,一个人可能同时扮演多个甚至所有角色,例如租住公寓和成为雇主 当然,您有权像这样对域进行建模,并处理多个对象,这些对象具有相同的个人

我知道在java中处理继承的策略不止一种,最好的性能是通过单个表实现的

下面的架构是一个类图:

对不起,模式是法语。在不涉及细节的情况下,personne指个人、雇主、业主、当地承租人和康吉假日

我如何从这个模式中得出我应该使用的最佳继承策略?

你确定吗? 在回答您的具体问题之前,我可以批评一下您的继承逻辑吗

您的基本阶层人员衍生为房东、租户和雇主。不幸的是,事实上,一个人可能同时扮演多个甚至所有角色,例如租住公寓和成为雇主

当然,您有权像这样对域进行建模,并处理多个对象,这些对象具有相同的个人数据和不同的id。但这并不能很好地反映现实世界。因此,如果房东要更改地址,你需要检查某个雇主或承租人是否与同一个人通信,以更新他们的地址

当日报价:如有疑问

适合您的模型的最佳策略 以下是可能的策略:

单表:所有继承类的所有属性都合并到一个大表中。如果只为每个派生类定义了两个附加属性,那么这种方法效果最好。不幸的是,雇主有一个关联,而房东有一个隐藏的与列表的自引用关联。由于不同儿童的关系不同,这种模式可能有一些缺点。 每个具体类的表:父类的所有属性都合并到子类中。在这种情况下,您将得到一个唯一的Person.id,它必须在三个表中保持唯一。 联接:每个类都有自己的表,适当的联接将各个部分放在一起。这可以满足您在这里的所有需求,并为您提供最佳的灵活性,使您能够发展并获得更复杂的孩子。 所以我推荐的策略就是加入

替代类模型 回到我观察到的承租人、房东和雇主都是一个人的角色,我会用不同的方式来建模:没有继承权,但一个人与承租人、房东和雇主之间会有一种0到多个0..*的关系


在这种情况下,我的系统中可能存在一个人,而没有任何主动角色。我可以在任何特定时间将其链接到任何相关角色,如果地址发生变化,我只需要更改一个具有唯一id的人。这难道不是一个更接近该领域现实的模型吗?

我讨厌此类问题,因为它们不会帮助任何人,并且属于非常具体的案例谢谢你的回答,我不是唯一一个要求具体案例的人,你可以要求管理员删除这个问题。再次感谢。