首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate多对多级联剔除总结

2012-08-25 
hibernate多对多级联删除总结A. 应用场景: 一个简单的权限系统的例子: 有三张主表: 用户表:t_user 角色表:

hibernate多对多级联删除总结
A. 应用场景:

一个简单的权限系统的例子:

有三张主表:
用户表:t_user
角色表:role
菜单表:menu

有两张关系表:
用户角色关系表:UserRoleMap
角色菜单关系表:RoleMenuMap

role表和t_user表,及role表和menu表通过两张关系表进行多对多关联。

目标是:当删除某个角色的时候,级联删除两张关系表中对应的关系记录

B. 下面是hibernate的实现:

UserRoleMap.hbm.xml
Xml代码
1.<?xml version="1.0"?> 
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
4.<!-- 
5.    Mapping file autogenerated by MyEclipse - Hibernate Tools
6.--> 
7.<hibernate-mapping> 
8.    <class name="com.cuishen.edwview.pojo.sys.UserRoleMap" table="userrolemap" catalog="edwindex"> 
9.        <composite-id> 
10.            <key-property name="userId" type="java.lang.Long"> 
11.                <column name="userid" /> 
12.            </key-property> 
13.            <key-property name="roleId" type="java.lang.Long"> 
14.                <column name="roleid" /> 
15.            </key-property> 
16.        </composite-id> 
17.    </class> 
18.</hibernate-mapping> 


RoleMenuMap.hbm.xml
Xml代码
1.<?xml version="1.0" encoding="UTF-8"?> 
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
4.<hibernate-mapping> 
5.<class name="com.cuishen.edwview.pojo.sys.RoleMenuMap" table="rolemenumap"> 
6.<composite-id> 
7.<key-property name="roleId" column="roleid" type="java.lang.Long"/>     
8.<key-property name="menuId" column="menuid" type="java.lang.Long"/> 
9.</composite-id> 
10.</class> 
11.</hibernate-mapping> 


Role.hbm.xml
Xml代码
1.<?xml version="1.0"?> 
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
4.<!-- 
5.    Mapping file autogenerated by MyEclipse - Hibernate Tools
6.--> 
7.<hibernate-mapping> 
8.    <class name="com.cuishen.edwview.pojo.sys.Role" table="role" catalog="edwindex"> 
9.    <id name="id" type="java.lang.Long" column="id"> 
10.        <generator type="string"> 
15.        <column name="name" length="20" not-null="true" /> 
16.    </property> 
17.    <set name="menus" table="RoleMenuMap" inverse="false" lazy="false" order-by="roleId, menuId"> 
18.        <key column="roleId"/> 
19.        <many-to-many column="menuId" table="UserRoleMap" inverse="false" lazy="false"> 
22.        <key column="roleId"/> 
23.        <many-to-many column="userId" 项配置。

当然可以在DDL建表时加入外键级联更新的定义,这样就全权交由数据库来级联删除,就不需要hibernate再操心了!

热点排行