问题描述
- Hibernate中,继承映射还是使用"type"字段区分
- 个人觉得hibernate的继承映射是很好的东西,但是看了不少项目都是使用的一个type字段来区分类型,而我们老师也是这样做的。
从对象的设计来说,User和Admin可以是一类,使用继承映射恰恰合适。而使用type字段等,第一:不符合面向对象的思想,第二:字段冗余但是,如果使用继承映射,我暂时想到的无法解决的问题包括:
对于角色转换,使用字段的方式可以通过改变这个字段来修改角色,比如User变为Admin,Admin变为User,这在一些权限管理的系统中肯定是会出现的。使用hibernate的继承映射的话,发现无法转换已经持久化的对象类型,如果通过先删再插入的方法,对于用的自动生成id的话,又无法主动指定id,所以不可行。所以,如果使用hibernate的继承映射,我上面提到的两个问题:无法转换角色(类型)、自动生成列手动指定id 是否确实存在?
学生一个,所以实际开发经验还缺乏,所以不确定如果采用继承映射,是否还会有其他潜在的问题。 或者说,最好不实用继承映射,而是使用传统的type方式。
解决方案
1.你说的无法转换角色(类型),一般的项目中角色是由超级管理员分配的user就是user,admin就是admin,为什么要将它进行转换,你创建一个role的实体表和映射表。
2.如果是自动生成id,则无法手动制定ID,显示层会 报no result and imput,前些天我遇到过。
解决方案二:
一般是这样:用户《---》角色《----》权限(资源);所以先是三张表user,role和privilege。然后是对应关系,用户角色对于表、角色权限对应表
解决方案三:
那是DB设计的原因:用户放在一个组中,组又分配已定义的角色。形成三方关系。很灵活的。
这是成熟的思路
时间: 2024-11-10 00:42:32