10
多多多多多多多 Hibernate 多多

10 hibernate 多对多关系映射

Embed Size (px)

Citation preview

Page 1: 10 hibernate 多对多关系映射

多对多关系映射

Hibernate 框架

Page 2: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系映射多对多关系也是关系模型比较常见的 (many to many)

比如: User( 用户 ) -- Roles( 权限 )

Employee( 员工 ) -- Projects( 项目 )

Page 3: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系映射

关系: User( 用户 ) -- Roles( 权限 ) 表结构: ( 会使用关联表 )

Users( 表 )

userId userName ----------------------------------- D001 张三 D002 李四 D003 王五 ……

Roles( 表 )

roleId roleName ------------------------------- 1 添加 2 删除 3 修改 ……

Users_Roles( 表 )

userId roleId ----------------------------------- D001 1 D001 3 D003 1 ……

Page 4: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系映射多对多关系的对象模型 ( 双向 ) Users( 用户 ) -- Roles( 权限 )

Users( 类 )

userId: String userName:String roles: Set( 集合 )

Roles( 类 )

roleId: int roleName: String users: Set ( 集合 )

Page 5: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系 -- 映射文件

Roles.hbm.xml:

<hibernate-mapping package="com.sodi.entity"> <class name="Roles" table="tab_roles">

<id name="roleId" column="roleid"> <generator class="assigned"/></id><property name="roleName" column="rolename"/>

<set name="users" table="tab_user_roles"> <key column="roleid"/> <many-to-many class="Users" column="userid" /></set>

</class> </hibernate-mapping>

Page 6: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系 -- 映射文件

Users.hbm.xml: <hibernate-mapping package="com.sodi.entity"> <class name="Users" table="tab_user">

<id name="userId" column="userid"><generator class="assigned"/>

</id><property name="userName" column="username"/>

<!-- 多对多关系中由另一方维持关联关系,由权限方来维持 --><set name="roles" table="tab_user_roles" inverse="true">

<key column="userid"/><many-to-many class="Roles" column="roleid" />

</set> </class> </hibernate-mapping>

Page 7: 10 hibernate 多对多关系映射

www.sodi.com.cn

多对多关系 -- 映射文件

注意点:table 属性值必须和单向关联中的 table 属性值一

<key> 中 column 属性值要与单向关联中的<many-to-many> 标签中的 column 属性值一致

在 <many-to-many> 中的 column 属性值要与单向关联中 <key> 标签的 column 属性值一致

Page 8: 10 hibernate 多对多关系映射

www.sodi.com.cn

操作演示

操作演示

Page 9: 10 hibernate 多对多关系映射

www.sodi.com.cn

总结

多对多关系模型 表结构及对象结构 inverse 的使用

Page 10: 10 hibernate 多对多关系映射

www.sodi.com.cn