iteye_5975
iteye_5975
2011-08-11 09:34
浏览 234
已采纳

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,其它通过一对一关联的实现,延迟加载!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • iteye_12540
    iteye_12540 2011-08-11 09:34
    已采纳

    我认为你整个设计有问题。教师(teacher),又是经理(manager),又是销售人员(seller)这些都是角色。
    实际上你这个问题是人和角色的多对多关联。我建议是人一个对象,角色一个对象。教师经理都是角色对象的子类。Hibernate上面只要人和角色多对多映射就是。

    点赞 评论
  • wtc860104
    改革春风吹满地 2011-08-11 09:34

    建议一对多,person里面有个set,多是role表示角色

    点赞 评论
  • ak121077313
    ak121077313 2011-08-11 09:34

    如果没有lzy 就别搞什么实体关联

    要的时候去才去取不然想改回来可以烦死你

    点赞 评论
  • bjl373842798
    uFreeWo 2011-08-11 09:34

    [quote="wtc860104"]建议一对多,person里面有个set,多是role表示角色[/quote]

    这个就挺好

    点赞 评论
  • chrislee1982
    chrislee1982 2011-08-11 09:34

    这样还一对一关联啊~~
    服了你了!!

    点赞 评论
  • iteye_6273
    iteye_6273 2011-08-11 11:17

    楼主的设计确实有问题啊!如果我再来一种新的身份,你的这个实体配置是不是要跟着该啊?
    这其实是一个典型的一人多角色的问题!teacher、manager、seller都是一个个的role,person与role是多对多的,person的配置文件中应该是一个role的set.
    对于每个不同的role之间有不同的属性字段的问题,楼主可以做一个通用的设计!

    点赞 评论

相关推荐