finemi 2015-06-10 15:34 采纳率: 100%
浏览 1769
已采纳

Hibernate中,继承映射还是使用"type"字段区分

个人觉得hibernate的继承映射是很好的东西,但是看了不少项目都是使用的一个type字段来区分类型,而我们老师也是这样做的。
从对象的设计来说,User和Admin可以是一类,使用继承映射恰恰合适。而使用type字段等,第一:不符合面向对象的思想,第二:字段冗余

但是,如果使用继承映射,我暂时想到的无法解决的问题包括:
对于角色转换,使用字段的方式可以通过改变这个字段来修改角色,比如User变为Admin,Admin变为User,这在一些权限管理的系统中肯定是会出现的。使用hibernate的继承映射的话,发现无法转换已经持久化的对象类型,如果通过先删再插入的方法,对于用的自动生成id的话,又无法主动指定id,所以不可行。

所以,如果使用hibernate的继承映射,我上面提到的两个问题:无法转换角色(类型)、自动生成列手动指定id 是否确实存在?
学生一个,所以实际开发经验还缺乏,所以不确定如果采用继承映射,是否还会有其他潜在的问题。 或者说,最好不实用继承映射,而是使用传统的type方式。

  • 写回答

3条回答 默认 最新

  • 强圆nice 2015-06-10 23:36
    关注

    1.你说的无法转换角色(类型),一般的项目中角色是由超级管理员分配的user就是user,admin就是admin,为什么要将它进行转换,你创建一个role的实体表和映射表。
    2.如果是自动生成id,则无法手动制定ID,显示层会 报no result and imput,前些天我遇到过。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • frank_20080215 2015-06-10 23:50
    关注

    那是DB设计的原因:用户放在一个组中,组又分配已定义的角色。形成三方关系。很灵活的。
    这是成熟的思路

    评论
  • SimbaLi123 2015-06-11 08:50
    关注

    一般是这样:用户《---》角色《----》权限(资源);所以先是三张表user,role和privilege。然后是对应关系,用户角色对于表、角色权限对应表

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Erasure Code纠删码表
  • ¥15 用vite创建的vue3项目,404重定向不起作用??
  • ¥15 关于#c语言#的问题:一个球从80米高度自由落下,每次落地后反弹的高度为原高度的一半计算6次小球反弹的高度.(反弹结果取整,使用走走for循环结构)
  • ¥15 SurfaceControl的screenshot问题
  • ¥15 基于51单片机的oled菜单代码,要C语言,模块化编程!
  • ¥15 JAVAswing,设计一个扑克牌什么的
  • ¥50 python ctypes调用dll实现分析
  • ¥40 用python解决数据统计问题
  • ¥100 是否有方案能通过抓包分析得到移动应用的名称和包名信息?
  • ¥15 opencv检测不到轮廓