zoukankan      html  css  js  c++  java
  • 【SSH 基础】浅谈Hibernate关系映射(4)

    继上篇博客

     

    多对多关联映射(单向)

     

    多对多对象关系映射,须要增加一张新表完毕基本映射。

    • Hibernate会自己主动生成中间表
    • Hibernate使用many-to-many标签来表示多对多的关联,多对多的关联映射,在实体类中,跟一对多一样,也是用集合来表示的。

     

    例如以下图所看到的

                         

    通过User能够查看Role的信息

     

    User的映射文件

    <hibernate-mapping>
    	<class name="com.bjpowernode.hibernate.User">
    		<id name="id">
    			<generator class="native"></generator>
    		</id>
    		<property name="name"></property>
    		<set name="roles" table="t_user_role">
    			<key column="user_id"></key>
    			<many-to-many class="com.bjpowernode.hibernate.Role" column="role_id"></many-to-many>
    		</set>		
    	</class>	
    </hibernate-mapping>
    

    Role的映射文件

    <hibernate-mapping>
    	<class name="com.bjpowernode.hibernate.Role">
    		<id name="id">
    			<generator class="native"></generator>
    		</id>
    		<property name="name"></property>	
    	</class>	
    </hibernate-mapping>
    

    多对多关联映射(双向)

     

    双向多对多对象关系映射,是两端都能将对方载入上来,双向都须要加上标签映射。

    要注意:

    *生成中间表名必须一样

    *生成中间表字段必须一样

                          


    User的映射文件:

    <hibernate-mapping>
    	<class name="com.bjpowernode.hibernate.User">
    		<id name="id">
    			<generator class="native"></generator>
    		</id>
    		<property name="name"></property>
    		<set name="roles" table="t_user_role">
    			<key column="user_id"></key>
    			<many-to-many class="com.bjpowernode.hibernate.Role" column="role_id"></many-to-many>
    		</set>		
    	</class>	
    </hibernate-mapping>
    

    Role的映射文件

    <hibernate-mapping>
    	<class name="com.bjpowernode.hibernate.Role">
    		<id name="id">
    			<generator class="native"></generator>
    		</id>
    		<property name="name"></property>
    		<set name="users" table="t_user_role">
    			 <key column="role_id"></key>
    			 <many-to-many class="com.bjpowernode.hibernate.User"></many-to-many>
    		</set>
    	</class>	
    </hibernate-mapping>
    

    差别:单向多对多和双向多对多存储结构没有不论什么的差别,但他们的映射文件是有差别的,载入过程是不同的。

     

     

    关系映射总结

     

          综上所述,能够看出,同一类映射,不管是单向还是双向,他们的存储结构是同样的,之所以映射文件不同,是由于载入时不同(在增删改时)即要通过谁能看到谁,还是互相都能看到。

          不管是一对多,多对多,还是一对一等关系,比如:Student---IdCard,学生想知道卡信息,那么Student端就会有IdCard的引用,反过来也就是双向的关系的话,通过IdCard想要知道Student的信息,那么IdCard端就要要Student的引用(实体关系上的体现)!

     



  • 相关阅读:
    吴裕雄--天生自然ANDROID开发学习:1.9 Android程序签名打包
    吴裕雄--天生自然ANDROID开发学习:1.8 工程相关解析(各种文件,资源访问)
    html 上传预览图片
    git笔记
    iscroll 下拉刷新功能
    移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果
    getElementsByClassName 兼容性
    登录页面-输入框清空按钮
    FireFox中iframe的返回上页问题
    ajax是异步的,异步取数据,如何能保证数据是存在的。
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4270833.html
Copyright © 2011-2022 走看看