实体关联映射——权限系统
来源:互联网 发布:python pip安装 编辑:程序博客网 时间:2024/05/18 01:12
项目地址:https://git.oschina.net/aboy2008/FirstWeb
在spring底层框架搭建过程中,实体之间的关联关系,个人感觉JPA与其hibernate实现确实棒棒的!
不过在实施过程中,遇到了太多关于数据关联关系设计混乱,维护困难的情况。当自己在搭建底层框架式,通过对hibernate的理解,设计Relation的接口,来约束大多数情况下的实体关联关系,效果显著。
/** * 关联类接口。 * <p>Author: smy * <p>Date: 2016/12/11 */public interface Relation<F extends BaseBean,S extends BaseBean> { /** * 获取实体1 * @return 实体1 */ F getFirst(); /** * 设置实体1 * @param first 实体1 */ void setFirst(F first); /** * 获取实体2 * @return 实体2 */ S getSecond(); /** * 设置实体2 * @param second 实体2 */ void setSecond(S second);}
/** * 关联实体基类。 * <p>Author: smy * <p>Date: 2016/12/11 */@MappedSuperclasspublic abstract class RelationEntity<F extends BaseEntity,S extends BaseEntity> extends BaseEntity implements Relation<F,S> { @ManyToOne @JoinColumn(name = "first_id", referencedColumnName = "id") private F first; @ManyToOne @JoinColumn(name = "second_id", referencedColumnName = "id") private S second; @Override public F getFirst() { return first; } @Override public void setFirst(F first) { this.first = first; } @Override public S getSecond() { return second; } @Override public void setSecond(S second) { this.second = second; }}
管理接口如下:
/** * <p>级联实体的通用Dao层。 * <p>Author: smy * <p>Date: 2016/11/17 */public interface RelationDao extends CommonDao { void setUpRelationForFirst(Class<? extends RelationEntity> relationClass, String firstId, String... secondIds); void setUpRelationForSecond(Class<? extends RelationEntity> relationClass, String secondId, String... firstIds); <T extends BaseEntity,R extends RelationEntity> List<R> getRelations(Class<R> relationClass, Class<T> referClazz, String referId); <F extends BaseEntity,S extends BaseEntity,R extends RelationEntity<F,S>> List<F> getFirsts(Class<R> relationClass, String secondId); <F extends BaseEntity,S extends BaseEntity,R extends RelationEntity<F,S>> List<S> getSeconds(Class<R> relationClass, String firstId); <T extends BaseEntity,R extends RelationEntity> List<R> getRelations(Class<R> relationClass, Class<T> referClazz, String... referIds); <F extends BaseEntity,S extends BaseEntity,R extends RelationEntity<F,S>> List<F> getFirsts(Class<R> relationClass, String... secondIds); <F extends BaseEntity,S extends BaseEntity,R extends RelationEntity<F,S>> List<S> getSeconds(Class<R> relationClass, String... firstIds); void deleteRelation(Class<? extends BaseEntity> clazz, String id); void deleteRelation(Class<? extends BaseEntity> clazz, String... ids);}
改设计方案保证的原实体的独立性,并可以对关联关系进行统一管理。
整个方案可以在https://git.oschina.net/aboy2008/FirstWeb 中的floor/extend/relation进行查看。
以权限系统用户与用户组关系为例:
@Entity@Table(name = "system_authority_user_group")public class UserGroupRelation extends RelationEntity<UserEntity,GroupEntity> {}
通过关联关系的统一调用,对整个权限系统的关联关系管理。
0 0
- 实体关联映射——权限系统
- 【Hibernate — 映射实体关联关系】
- SSH——Hibernate实体关联映射总结(一)
- 映射实体关联关系
- Hibernate 实体关联关系映射
- Hibernate第三章知识点总结——第三章--实体关联关系映射
- SSH——hibernate 利用注解实现实体关联映射详解
- Mybatis步步进阶(七)——Mybatis实体关联映射
- SSH——hibernate 利用注解实现实体关联映射详解
- Hibernate高级实体关联映射之多值的实体关联(实体类实现三重关联)
- 关联关系映射——一对一关联
- 关联关系映射——一对一关联
- Hibernate 实体关联关系映射----总结
- Hibernate 实体关联关系映射----总结
- Hibernate 实体关联关系映射----总结
- Hibernate 映射实体关联关系(一)
- Hibernate 映射实体关联关系(二)
- hibernate search 嵌入和关联实体映射
- win7下硬盘安装CentOs7
- 2017最新v3学院内部FPGA全套教学视频,要的跟帖留邮箱!
- Azure Messaging-ServiceBus Messaging消息队列技术系列4-复杂对象消息是否需要支持序列化和消息持久化
- 蓝桥杯-寒假作业
- 扇形绘制(超低效率)
- 实体关联映射——权限系统
- nyoj325-zb的生日
- 搞定了困扰很久的win10 allapps 内快捷方式丢失的问题!
- Linux centos 学习笔记 DAY1 文件属性与权限
- 凯撒密码源码
- Android 完整反编译第二期:10分钟教会你使用反编译!
- ubunt14.04安装zabbix3.2
- 使用AndroidStudio打包的那些事
- Android 热修复AndFix的简单使用介绍