一对多的关系映射

在一的一方配置文件中将会配置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>

Hibernate学习笔记(一):级联删除的更多相关文章

  1. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  2. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  3. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  4. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  5. Hibernate学习笔记

    一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...

  6. Hibernate学习笔记(三)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  7. Hibernate学习笔记(四)—— 表与表的关系

    一.一对多|多对一 1.1 关系表达 1.1.1 表中的表达 建表原则:在多的一方创建外键指向一的一方的主键. 1.1.2 实体中的表达 [客户实体] public class Customer { ...

  8. Hibernate学习笔记4

    一.关于联合主键的映射测试实例 实体类: package com.***.comBineKey;public class Person { private Person_pk pk; private ...

  9. 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN

    声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...

随机推荐

  1. 【POJ3468】【zkw线段树】A Simple Problem with Integers

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  2. newInstance()和new的区别

    在初始化一个类,生成一个实例的时候:newInstance() 和 new 有什么区别?用newInstance与用new是有区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有 ...

  3. Winform使用DevExpress的WaitDialogForm画面

    使用了DevExpress的WaitDialogForm 在应用程序加载开始时新建一个线程,并将loading画面show起来,在应用程序画面弹出前将该线程终止. 代码: private DevExp ...

  4. Js设置所有连接是触发/swt/的代码

    Js设置所有连接是触发/swt/的代码 代码为: <script> var doca=document.getElementsByTagName('a'); for(var i=0;i&l ...

  5. 如何将eclipse里的项目发布到github

    首先,给eclipse安装上EGit 在“Help > Install new software”中添加 http://download.eclipse.org/egit/updates 两个都 ...

  6. 浏览器JS报错Uncaught RangeError: Maximum call stack size exceeded?

    JavaScript错误:Uncaught RangeError: Maximum call stack size exceeded 堆栈溢出 原因:有小类到大类的递归查询导致溢出 解决方法思想: A ...

  7. 【Windows核心编程】Windows常见数据类型

    一,常见数据类型 WORD:               16位无符号整形数据 DWORD:             32位无符号整型数据(DWORD32) DWORD64:         64位无 ...

  8. pycharm console 控制台乱码的解决

  9. Oralce 字符串截取

    update E_SYS_STRATEGY set sconfigvalue=(select Substr((select sconfigvalue from E_SYS_STRATEGY where ...

  10. Truck History(poj 1789)

    Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...