• hibernate>一对多关联映射 小强斋


     

    一对多关联映射利用了多对一关联映射原理

    多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
    一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

    也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

    在一端维护关系的缺点:
     * 如果将t_student表里的classesid字段设置为非空,则无法保存
     * 因为不是在student这一端维护关系,所以student不知道是哪个班的,所以需要发出多余的update语句来更新关系

    一、hihernate一对多关联映射(单向Classes----->Student)

    Classes.hbm.xml

    <hibernate-mapping package="com.bjsxt.hibernate">
    	<class name="Classes" table="t_classes">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<set name="students">
    			<key column="classesid"/>
    			<one-to-many class="Student"/>
    		</set>
    	</class>
    </hibernate-mapping>

    Student.hbm.xml

    <hibernate-mapping>
    	<class name="com.bjsxt.hibernate.Student" table="t_student">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    	</class>
    </hibernate-mapping>

    二、hihernate一对多关联映射(单向Classes----->Student)

    Classes.hbm.xml

    <hibernate-mapping package="com.bjsxt.hibernate">
    	<class name="Classes" table="t_classes">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<set name="students" inverse="true" cascade="all">
    			<key column="classesid"/>
    			<one-to-many class="Student"/>
    		</set>
    	</class>
    </hibernate-mapping>

    Student.hbm.xml

    <hibernate-mapping>
    	<class name="com.bjsxt.hibernate.Student" table="t_student">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<many-to-one name="classes" column="classesid"/>
    	</class>
    </hibernate-mapping>

    三、lazy – 延迟加载(懒加载)

    lazy – 延迟加载(懒加载),一般用于集合的抓取策略,也就是说只在需要用到的情况下,再发出select语句,将其相关的对象查询出来 ,set默认lazy属性的值是true,即hibernate会自动使用懒加载策略,以提高性能

    <set name="students“ lazy=“false”>
    
              <key column="classesid" ></key>
    
              <one-to-many class="com.bjsxt.hibernate.Student" />
    
     </set>
    

    四、inverse – 标记由哪一方来维护关联关系(双向关联中会用到)

    inverse默认值为false

    如果inverse设置为true,表示将由对方维护两者之间的关联关系。

    inverse="true" 反转,cascade="all"级联,共同结果由对方维护两者之间的关联关系.

     <set name="students“ lazy=“false” inverse=“true”>
    
              <key column="classesid" ></key>
    
              <one-to-many class="com.bjsxt.hibernate.Student" />
    
     </set>
    


     


     

     


     

  • 相关阅读:
    Android 添加cookie
    解决安卓TextView异常换行,参差不齐等问题
    Java遍历List的时候删除item
    android setCompoundDrawables 不显示问题
    Git 操作的一些场景
    C# 函数参数中的this
    Git 常用命令
    C# 判断程序是否执行 进行启动或前台显示
    在窗体中嵌入 应用程序
    byte[] 转 2进制字符串
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5637512.html
Copyright © 2020-2023  润新知