一对多的关系映射

在一的一方配置文件中将会配置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. [转]Delphi Form的释放和隐藏:free,hide,close

    form.Free - 释放Form占用的所有资源.Free后,Form指针不能再使用,除非对Form重新赋值. form.Hide - 隐藏Form.可以调用form.Show再一次显示. form ...

  2. Java设计模式(学习整理)----装饰模式

    1.概念: (在我看来,模式就像是是一种思想,在这种思想的指引下,对代码和结构的一番加工和整合而已!都是套路!) 装饰模式又称包装(Wrapper)模式,是以对客户端透明的方式扩展对象的功能,是继承关 ...

  3. hdu2962 Trucking (最短路+二分查找)

    Problem Description A certain local trucking company would like to transport some goods on a cargo t ...

  4. 给id赋值

    var div = document.getElementByTagName('div') div.id="mydiv";div.setAttribute("id&quo ...

  5. 基于cx_freeze编译PyQt4程序(numpy & scipy)

    当开发完成PyQt4程序后,需要提供给他人使用,这时最好的办法是将Python程序编译成exe文件. 通常我采用cx_freeze完成这个工作,即编写setup.py文件,执行python setup ...

  6. 如何在search中动态的显示和隐藏tree中的字段

    在tree定义 invisible 来自context <field name="country_id" invisible="context.get('invis ...

  7. Unix/Linux 'dirctory tree' command.

    ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' It se ...

  8. 如何正确的使用uwsgi

    简单的安装过程可以在这里找到,这里主要说一下如何配置uwsgi的服务,将uwsgi服务加入系统进程,你可以使用如下两种方式安装 apt-get apt-get install uwsgi 该命令会自动 ...

  9. 如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service

    环境: Visual Studio 2013 + .Net Framework 4.5.2 1.新建项目 2.安装OData,ODP.NET 安装的包: 下面是部分代码: using System; ...

  10. Flex DataGrid 添加控件

    哈喽,又和大家见面了.今天要写的东西是关于Flex DataGrid添加“编辑”或“删除”按钮. 下面是部分代码: <mx:DataGrid id="dgShow" x=&q ...