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 ...
随机推荐
- 设置css三种方法的优先级
有的小伙伴问了,如果有一种情况:对于同一个元素我们同时用了三种方法设置css样式,那么哪种方法真正有效呢?在下面代码中就出现了这种情况 1.使用内联式CSS设置“超酷的互联网”文字为粉色. 2.然后使 ...
- WPF 自定义Button控件及样式
这次通过最近做的小例子说明一下自定义Button控件和样式. 实现的效果为:
- [转]mysql 导入导出数据库以及函数、存储过程的介绍
本篇文章是对mysql中的导入导出数据库命令以及函数.存储过程进行了详细的分析介绍,需要的朋友参考下: mysql常用导出数据命令:1.mysql导出整个数据库 mysqldump -hhostna ...
- c++文件读写相关
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: ...
- 定时器内部的this
今天写了个例子遇见的: timer1=setTimeout(function(){ $(this).next().css("display","none") } ...
- 最优秀的5个Linux文本编辑器
from: http://article.yeeyan.org/view/169956/174836 作为不久前举办的比赛的一部分内容,我从那些选出他们最喜欢的Linux文本编辑器的极客读者们那获得了 ...
- 如何执行一个mysql的sql脚本文件
sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件.基本步骤如下:一.创建包含sql命 ...
- 关于wtl的一个实验
代码如下: #include <iostream> using namespace std; template<typename T> class Base { public: ...
- gulp配置browserify多入口
需要 var es = require('event-stream'); gulp.task('browserify', function(){ var files = [ { fpath: './j ...
- vss报错Workgroup无法访问,您可能没有权限使用网络资源解决办法
xp下访问svn或者vss的时候只能使用ip进行访问表示很不爽,昨天还好好的,结果就不能使用计算机名字去访问了. 很是郁闷,打开网上邻居之后发现,居然连网上邻居都搜不出来,于是关掉windows自带防 ...