我使用JPA/Hibernate、MySQL和SpringRoo,我正在为一个将具有两种不同类型成员的应用程序建模:
- 男性成员
- 女性成员
截至目前,我有一个表/实体供男性和女性成员使用。
然而,我现在意识到,根据成员是男性还是女性,某些字段/属性会有所不同。
例如,我可以为男性设置一个">胡须样式"属性,该属性将包含以下可能值:">修剪、长和剃掉"。
我想到了几个选项来在我的域模型中表示这一点:
- 进行某种JPA继承。但是,我不确定该选择哪种策略,Hibernate支持哪种策略
- 在我的会员表/实体中有两个字段maleSpecificInfo和femaleSpecicInfo。如果成员是女性,则maleSpecificInfo将为空,反之亦然
请任何人就我的哪种选择(如果有的话)是可以接受的提供建议。或者提供更好的替代方案?
我不喜欢第二种方法。一个男性对象可能包含一个与FemaleSpecificInfo的关系,这对我来说很难闻。我认为"组合而非继承"的实现是不对的。
我会尝试Hibernate继承。你应该检查一下策略。如果男性和女性共享大部分数据,我会使用每个类层次结构的表。