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>
Hibernate学习笔记(一):级联删除的更多相关文章
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- Hibernate 学习笔记一
Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...
- Hibernate学习笔记(一)
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- Hibernate学习笔记
一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...
- Hibernate学习笔记(三)
我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...
- Hibernate学习笔记(四)—— 表与表的关系
一.一对多|多对一 1.1 关系表达 1.1.1 表中的表达 建表原则:在多的一方创建外键指向一的一方的主键. 1.1.2 实体中的表达 [客户实体] public class Customer { ...
- Hibernate学习笔记4
一.关于联合主键的映射测试实例 实体类: package com.***.comBineKey;public class Person { private Person_pk pk; private ...
- 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...
随机推荐
- mem 族函数的实现
1.void * memcpy ( void * dest, const void * src, size_t num ); 头文件:#include <string.h>memcpy() ...
- 【工具篇】xshell
SSH.telnet.串口登录等,类似Secure CRT,蛮好用的. 中文显示乱码的解决方法,file->properties,在Encoding那里修改为UTF-8 修改颜色,点Edit修改 ...
- printf 缓冲区问题
突然发现printf的问题,看了这个很有意思,学习一下 转自:http://blog.csdn.net/shanshanpt/article/details/7385649 昨天在做Linux实验的时 ...
- Android开发系列----sdk下载 环境准备
今天开始准备Android开发环境,FQ下载Android Studio,官网下载地址 https://developer.android.com/studio/install.html (突然发现我 ...
- Oauth认证简介
Oauth是什么: 1.Oauth是一种安全认证的协议: 2.Oauth为用户资源的授权提供了一个安全的.开放而又简易的标准: 3.Oauth的授权不会使第三方触及到用户的账号信息(用户名和密码). ...
- 下拉框——把一个select框中选中内容移到另一个select框中遇到的问题
在使用jQuery实现把一个select框中选中内容移到另一个select框中功能时遇到了一个问题,就是点击按钮时内容可以到另一个select框中,但是到了另一个select框中的内容却很快闪退回原来 ...
- splice从数组中删除指定定数据
/*从数组中删除指定定数据var somearray = ["mon", "tue", "wed", "thur"]so ...
- Bootstrap_Javascript_选项卡
选项卡Tabs是Web中一种非常常用的功能.用户点击或悬浮对应的菜单项,能切换出对应的内容. 一 . 结构分析 Bootstrap框架中的选项卡主要有两部分内容组成: 选项卡组件(也就是菜单组件),对 ...
- Rewrite的QSA是什么意思?
原版的英文: When the replacement URI contains a query string, the default behavior of RewriteRule is to d ...
- oracle常见sql积累
select lower('HELLO') from dual;select lpad(100, 5, '*') from dual;select sysdate + 1 / 24 from dual ...