zoukankan      html  css  js  c++  java
  • Hibernate学习笔记(一):级联删除

    一对多的关系映射

    在一的一方配置文件中将会配置set节点信息:

    *.hbm.xml配置文件中set节点的属性:

             Lazy:默认是true 即使用延迟加载,false表示即时加载;

             Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改;

             Cascade:是否使用级联操作;配置方法:cascade的值有如下几个;

          all: 所有情况下均进行关联操作,即save-update和delete。

          none: 所有情况下均不进行关联操作。这是默认值。 

          save-update: 在执行save/update/saveOrUpdate时进行关联操作。 

          delete: 在执行delete 时进行关联操作。

          all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点

             Inverse:反转。True表示由对方负责控制,false表示由自己控制。

    级联删除:(在一的一方的配置文件中set节点进行配置)

      cascade的值使用all表示对所有操作都级联;

      把set节点的属性inverse的值改为true:

      就可以实现级联删除了,即删除一的一方后,在多的一方中引用到一的一方的主键的全部记录将会被删除

    一对多中的‘一’

      vo

    package org.sunny.shop.vo;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Set;
    
    public class Category {
    
        private int cid;
        private String cname;
        private Date dateinsert ;
        private Date dateupdate ;
      //利用集合来与多的一方关联
        private Set<Category2th> category2thSet;
    
        /*
       *
       *剩下的为setter、getter方法
       *
       */
    
    }

      Category.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="org.sunny.shop.vo.Category" table="category">
            <id name="cid" column="cid">
                <generator class="identity" />
            </id>
            <property name="cname" />
            <property name="dateinsert" />
            <property name="dateupdate" />
            
            <!-- 配置二级分类的集合 -->
            <set order-by="csid" name="category2thSet" lazy="false" cascade="all" inverse="true">
                <key column="cid"/>
                <one-to-many class="org.sunny.shop.vo.Category2th"/>
            </set>
        </class>
    </hibernate-mapping>

    一对多中的‘多’

      vo

    package org.sunny.shop.vo;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Set;

    public class Category2th { private int csid; private String csname; // 分类添加时间 private Date dateinsert; // 分类更新时间 private Date dateupdate; private Category category;   //用vo类与一对多中的‘一’关联 private Set<Product> productSet; /*    *    *剩下的是setter、getter方法    *    */ }

      Category2th.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="org.sunny.shop.vo.Category2th" table="categorysecond">
            <id name="csid" column="csid">
                <generator class="identity" />
            </id>
            <property name="csname"/>
            <property name="dateinsert" />
            <property name="dateupdate" />
            
            <!-- 二级分类与一级分类的关联 -->
            <many-to-one name="category" lazy="false" class="org.sunny.shop.vo.Category">
                <column name="cid"></column>
            </many-to-one>
        </class>
    </hibernate-mapping>
  • 相关阅读:
    连接mysql数据库,创建用户模型
    管理信息系统的开发与管理
    加载静态文件,父模板的继承和扩展
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局
    制作首页的显示列表
    发布功能完成
    登录之后更新导航
    完成登录功能,用session记住用户名
    完成注册功能
  • 原文地址:https://www.cnblogs.com/FlyingPuPu/p/5325209.html
Copyright © 2011-2022 走看看