详述多对多关系映射
2015-10-30 09:13
267 查看
上面两篇文章说了一对一关联映射和一对多关联映射,下面该说最后一种关联映射,多对多关联映射,以User-Role为例:
1)User--Role(多对多,单向关联,关系维护在关系表t_user_role端)
i、Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
</class>
</hibernate-mapping>
ii、User
<hibernate-mapping>
<class name="com.tgb.hibernate.User" table="t_user">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<set name="roles" table="t_user_role">
<key column="user_id" />
<many-to-many class="com.tgb.hibernate.Role" column="role_id"
/>
</set>
</class>
</hibernate-mapping>
2)User--Role(多对多,双向关联),其余关系不变
i、Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<set name="users" table="t_user_role">
<key column="role_id" />
<many-to-many class="com.tgb.hibernate.User" column="user_id"
/>
</set>
</class>
</hibernate-mapping>
总结:通过以上的总结,关系的维护其实就是在某一端或两端加上关联,当进行查找的时候,通过关联关系可以找到相对应的数据。其实和我们平时理解的实体对象模型的设计是一样的。一对一关系,关系随便放到谋一端就可;一对多则放到多的一端,多对多则就单独出来,形成一张关系表进行维护。
1)User--Role(多对多,单向关联,关系维护在关系表t_user_role端)
i、Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
</class>
</hibernate-mapping>
ii、User
<hibernate-mapping>
<class name="com.tgb.hibernate.User" table="t_user">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<set name="roles" table="t_user_role">
<key column="user_id" />
<many-to-many class="com.tgb.hibernate.Role" column="role_id"
/>
</set>
</class>
</hibernate-mapping>
2)User--Role(多对多,双向关联),其余关系不变
i、Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<set name="users" table="t_user_role">
<key column="role_id" />
<many-to-many class="com.tgb.hibernate.User" column="user_id"
/>
</set>
</class>
</hibernate-mapping>
总结:通过以上的总结,关系的维护其实就是在某一端或两端加上关联,当进行查找的时候,通过关联关系可以找到相对应的数据。其实和我们平时理解的实体对象模型的设计是一样的。一对一关系,关系随便放到谋一端就可;一对多则放到多的一端,多对多则就单独出来,形成一张关系表进行维护。
相关文章推荐
- Linux Generating SSH Keys
- perl脚本实现限制ssh最大登录次数(支持白名单)
- rsync ssh 数据同步分析
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- 搭建SSH时的思考和遇到的几个问题的解决方法
- SSH 使用原理 与解释
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- Linux VPS利用SSH重置ROOT密码的方法
- ssh,scp自动登陆的实现方法
- linux下使用ssh远程执行命令批量导出数据库到本地
- ssh非交互式密码授权远程执行脚本