hibernate 这样设计是否合理? one-to-one 延迟加载!
需求如下: 一个人(person),具有多种身份(Identity1).
如一个人既是教师(teacher),又是经理(manager),又是销售人员(seller).也可能是其中一种,或两种. 而且字段差距较大.(我其中一个项目是person具有10种身份)
hibernate数据库设计应如何设计:
我设计如下,两种情况;
(1) person 与teacher,person与manager ,person与seller 分别是一对一关联(主键关联).
(2) person 是父类,其它通过join-subclass继承实现.
但我现在存在一个问题. 查询person时,会把 相关联的 teacher,manager,seller. 通过(left outer join)一并查询出来,不能实现延迟加载.
请问大家有什么好的设计?或好的意见?能实现延迟加载. 就是我查询person,其它通过一对一关联的实现,延迟加载!
我认为你整个设计有问题。教师(teacher),又是经理(manager),又是销售人员(seller)这些都是角色。
实际上你这个问题是人和角色的多对多关联。我建议是人一个对象,角色一个对象。教师经理都是角色对象的子类。Hibernate上面只要人和角色多对多映射就是。
建议一对多,person里面有个set,多是role表示角色
如果没有lzy 就别搞什么实体关联
要的时候去才去取不然想改回来可以烦死你
[quote="wtc860104"]建议一对多,person里面有个set,多是role表示角色[/quote]
这个就挺好
这样还一对一关联啊~~
服了你了!!
楼主的设计确实有问题啊!如果我再来一种新的身份,你的这个实体配置是不是要跟着该啊?
这其实是一个典型的一人多角色的问题!teacher、manager、seller都是一个个的role,person与role是多对多的,person的配置文件中应该是一个role的set.
对于每个不同的role之间有不同的属性字段的问题,楼主可以做一个通用的设计!