请教一个hibernate的继承orm问题

09-02-27 se8
各位前辈,我设计了一个小系统,有一部分是这样的,有个Comment(评论)对象,Comment有个CommentCreator(评论创建人),

CommentCreator又有两个子类,分别是UserCommentCreator(用户创建评论人)和GuestCommentCreator(游客创建评论人),类图如第一个图。如果直接做orm映射,就会有5张表,如第二个图。这样不仅导致数据库运行效率降低,而且和设计的意思也不符。如果实现是UserCommentCreator,CommentCreator的id就应该是User的id。于是我就做了表修改优化,如第三个图。user_creator_id将是user表或者guest表的id,根据creator_type来判断,如果creator_type是user,创建人就是User,如果creator_type是guest,那末创建人就是Guest,这样查询起来效率也高些。但这样用hibernate做orm就不知道该怎么写了,请前辈指点!

[该贴被se8于2009-02-27 23:35修改过]




banq
2009-03-02 09:17
设计时,不要把数据库设计和类图一起考虑,永远记住:数据库是类图设计的结果,两者是互为因果关系,就象先有爹娘才有孩子一样,两者不能并列,如果并列就导致你现在这样的疑惑,如果不并列,就大道至简,所以,思维逻辑非常重要。

CommentCreator有两个子类,这种继承关系参考Hibernate配置或元注释语法使用,可以输出到一张表里的。。

se8
2009-03-02 10:40
多谢banq老师回复

猜你喜欢