SlideShare a Scribd company logo
1 of 10
Hibernate 框架


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

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

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




www.sodi.com.cn
多对多关系映射

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

          userId       userName                                   roleId        roleName
       -----------------------------------                      -------------------------------
          D001            张三                                         1             添加
          D002            李四                                         2             删除
          D003            王五                                         3             修改
          ……                                                         ……



                                             Users_Roles( 表 )

                                  userId            roleId
                               -----------------------------------
                                   D001                1
                                   D001                3
                                   D003                1
                                    ……
www.sodi.com.cn
多对多关系映射
 多对多关系的对象模型 ( 双向 )

          Users( 用户 )            -- Roles( 权限 )



                  Users( 类 )                Roles( 类 )

              userId: String              roleId: int
              userName:String             roleName: String
              roles: Set( 集合 )            users: Set ( 集合 )




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>



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>



www.sodi.com.cn
多对多关系 -- 映射文件
 注意点:
  table 属性值必须和单向关联中的 table 属性值
   一致

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


www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
总结

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




www.sodi.com.cn
www.sodi.com.cn

More Related Content

Similar to 10 hibernate 多对多关系映射

Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能WASecurity
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步WASecurity
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
11 hibernate 组件映射
11 hibernate 组件映射11 hibernate 组件映射
11 hibernate 组件映射Zelin Wang
 
mysql总结
mysql总结mysql总结
mysql总结haiwang
 
高粒度模块化的前端开发
高粒度模块化的前端开发高粒度模块化的前端开发
高粒度模块化的前端开发iddcn
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
Css性能优化
Css性能优化Css性能优化
Css性能优化linxz
 
Sql语句的优化
Sql语句的优化Sql语句的优化
Sql语句的优化abszhanghe
 
Mongodb
MongodbMongodb
Mongodbbj
 
CSS 培训
CSS 培训CSS 培训
CSS 培训S S
 

Similar to 10 hibernate 多对多关系映射 (13)

Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
11 hibernate 组件映射
11 hibernate 组件映射11 hibernate 组件映射
11 hibernate 组件映射
 
Structs2簡介
Structs2簡介 Structs2簡介
Structs2簡介
 
mysql总结
mysql总结mysql总结
mysql总结
 
高粒度模块化的前端开发
高粒度模块化的前端开发高粒度模块化的前端开发
高粒度模块化的前端开发
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
Css性能优化
Css性能优化Css性能优化
Css性能优化
 
Sql语句的优化
Sql语句的优化Sql语句的优化
Sql语句的优化
 
Mongodb
MongodbMongodb
Mongodb
 
CSS 培训
CSS 培训CSS 培训
CSS 培训
 

More from Zelin Wang

15 hibernate hql查询2
15 hibernate hql查询215 hibernate hql查询2
15 hibernate hql查询2Zelin Wang
 
14 hibernate hql查询1
14 hibernate hql查询114 hibernate hql查询1
14 hibernate hql查询1Zelin Wang
 
13 hibernate 继承映射
13 hibernate 继承映射13 hibernate 继承映射
13 hibernate 继承映射Zelin Wang
 
7 hibernate最佳实践
7 hibernate最佳实践7 hibernate最佳实践
7 hibernate最佳实践Zelin Wang
 
6 事务和并发控制
6 事务和并发控制6 事务和并发控制
6 事务和并发控制Zelin Wang
 
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构Zelin Wang
 
2 hibernate核心api
2 hibernate核心api2 hibernate核心api
2 hibernate核心apiZelin Wang
 
8 hibernate 一对一关系映射
8 hibernate 一对一关系映射8 hibernate 一对一关系映射
8 hibernate 一对一关系映射Zelin Wang
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍Zelin Wang
 

More from Zelin Wang (9)

15 hibernate hql查询2
15 hibernate hql查询215 hibernate hql查询2
15 hibernate hql查询2
 
14 hibernate hql查询1
14 hibernate hql查询114 hibernate hql查询1
14 hibernate hql查询1
 
13 hibernate 继承映射
13 hibernate 继承映射13 hibernate 继承映射
13 hibernate 继承映射
 
7 hibernate最佳实践
7 hibernate最佳实践7 hibernate最佳实践
7 hibernate最佳实践
 
6 事务和并发控制
6 事务和并发控制6 事务和并发控制
6 事务和并发控制
 
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构
 
2 hibernate核心api
2 hibernate核心api2 hibernate核心api
2 hibernate核心api
 
8 hibernate 一对一关系映射
8 hibernate 一对一关系映射8 hibernate 一对一关系映射
8 hibernate 一对一关系映射
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍
 

10 hibernate 多对多关系映射

  • 1. Hibernate 框架 多对多关系映射
  • 2. 多对多关系映射  多对多关系也是关系模型比较常见的 (many to many)  比如: User( 用户 ) -- Roles( 权限 ) Employee( 员工 ) -- Projects( 项目 ) www.sodi.com.cn
  • 3. 多对多关系映射  关系: User( 用户 ) -- Roles( 权限 )  表结构: ( 会使用关联表 ) Users( 表 ) Roles( 表 ) userId userName roleId roleName ----------------------------------- ------------------------------- D001 张三 1 添加 D002 李四 2 删除 D003 王五 3 修改 …… …… Users_Roles( 表 ) userId roleId ----------------------------------- D001 1 D001 3 D003 1 …… www.sodi.com.cn
  • 4. 多对多关系映射  多对多关系的对象模型 ( 双向 ) Users( 用户 ) -- Roles( 权限 ) Users( 类 ) Roles( 类 ) userId: String roleId: int userName:String roleName: String roles: Set( 集合 ) users: Set ( 集合 ) www.sodi.com.cn
  • 5. 多对多关系 -- 映射文件 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> www.sodi.com.cn
  • 6. 多对多关系 -- 映射文件 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> www.sodi.com.cn
  • 7. 多对多关系 -- 映射文件 注意点:  table 属性值必须和单向关联中的 table 属性值 一致  <key> 中 column 属性值要与单向关联中的 <many-to-many> 标签中的 column 属性值 一致  在 <many-to-many> 中的 column 属性值要 与单向关联中 <key> 标签的 column 属性值一 致 www.sodi.com.cn
  • 8. 操作演示 操作演示 www.sodi.com.cn
  • 9. 总结  多对多关系模型  表结构及对象结构  inverse 的使用 www.sodi.com.cn