Hibernate 多对多 删除操作

hibernate批量删除 在我们的Java项目中,批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据。批量删除虽然在Hibernate里也可以实现,但因Hibernate的实现机制是一个一个删除,在数量大的情况下很影响效率;其实Hibernate提供的JDBC接口,可以方便的进行批量的更新和删除。 立即下载

Hibernate 多对多 删除操作(many-to-many)

Hibernate多对多的例子不少,但仔细一看,大多数都是保存的,删除谈的少,但问题还不少,因此有必须简单测试一下,以下我们来个简单的多对多关系建立

老师Teacher 与 课程Course 是一个多对多的关系,Pojo与XMl配置如下。

Pojo

/**
 * Course Entity
 * see table: tbl_course
 */
package com.leo.domain;

import java.util.HashSet;
import java.util.Set;

/**
 * @author superleo
 * 
 */
public class Course {

 private String id;

 private String name;

 private Set<Teacher> teachers = new HashSet<Teacher>();

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Set<Teacher> getTeachers() {
  return teachers;
 }

 public void setTeachers(Set<Teacher> teachers) {
  this.teachers = teachers;
 }

}

/**
 * Teacher Entity
 * see table: tbl_teacher
 */
package com.leo.domain;

import java.util.HashSet;
import java.util.Set;

/**
 * @author superleo
 * 
 */
public class Teacher {

 private String id;

 private String name;

 private Set<Course> courses = new HashSet<Course>();

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Set<Course> getCourses() {
  return courses;
 }

 public void setCourses(Set<Course> courses) {
  this.courses = courses;
 }

}

Hibernate配置文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
 <class name="com.leo.domain.Course" table="tbl_course"
  batch-size="100" dynamic-insert="true" dynamic-update="true">
  <id name="id" column="id">
   <generator class="uuid" />
  </id>
  <property name="name" column="name" type="string" />

  <set access="property" lazy="true" inverse="false"
   cascade="save-update" name="teachers" batch-size="10" fetch="select"
   table="tbl_teacher_course">
   <key column="fk_course_id" />
   <many-to-many class="com.leo.domain.Teacher"
    column="fk_teacher_id" />
  </set>

 </class>
</hibernate-mapping>

Xml代码:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
 <class name="com.leo.domain.Teacher" table="tbl_teacher"
  batch-size="100" dynamic-insert="true" dynamic-update="true">
  <id name="id" column="id">
   <generator class="uuid" />
  </id>
  <property name="name" column="name" type="string" />

  <set access="property" lazy="true" inverse="true"
   cascade="save-update" name="courses" batch-size="10" fetch="select"
   table="tbl_teacher_course">
   <key column="fk_teacher_id" />
   <many-to-many class="com.leo.domain.Course"
    column="fk_course_id" />
  </set>

 </class>
</hibernate-mapping>

ROS自定义地图实战:从CAD到导航的完整流程 本文详细介绍了如何将CAD图纸或手绘草图高效转换为ROS机器人可直接使用的导航地图。通过解析PGM与YAML标准格式,提供从图像处理、尺度校准到集成AMCL与move_base导航栈的完整实战流程,帮助开发者跳过繁琐的SLAM建图,实现快速、精准的自定义地图部署。 阅读详情

相关推荐

Cadence Allegro 17.4学习记录开始00

Cadence Allegro 有三个版本,16.6,17.2,17.4。现在主要学习最新的版本17.4.原理图设计:OrCADPCB设计:Allegro主要用到的就下面三个图片软件:PCB Editor 17.4 是用来画PCB和元器件封装的;Padstack Editor 17.4 是用来画元器件焊盘的;Capture CIS 17.4 是用来画原理图和原理图库的。其实Cadence还有很多功能,现在计划先学习以上内容,后面熟悉了这个软件,还可以继续学习放仿真等功能。

qq_31444421的博客 7450

hibernate 多对多只删除中间表数据

首先配置表的多对多映射 具体方法参见《深入浅出hibernate》  下面列出删除中间表数据的方法  role跟Program 是多对多关系  Java代码   Role role = get(roleId);            for(Long programId : programIds){               Program p = get(Pro

haylee的专栏 6707

Docker 安装 CentOS7

本文主要介绍了docker 下安装centos7。访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。可以通过 Sort by 查看其他版本的 CentOS 。默认是最新版本 centos:latest 。 使用以下命令来查看是否已安装了 centos7: 启动centos容器,并把docker上centos的22端口映射到本机60001端口(端口号可以自己指定) 3、进入到Centos容器 4.安装ssh服务和网络必须软件

折腾java的博客 1万+

Hibernate:多对多删除

案例: 书籍类(Book.java)和书籍类别(Category.java) 表结构: t_hibernate_book表: t_hibernate_category表: t_hibernate_book_category表(中间表): 先创建多对多联系: book类: package com.crud.five.entity; import java.util.H...

qq_40973475的博客 951

phaser3适配微信小游戏

phaser3适配微信小游戏

SilenzioX的博客 1806

量化交易中的烂板策略:短线高频交易实战解析

量化交易通过算法模型实现自动化投资决策,其中短线高频交易是典型应用场景。从市场微观结构看,涨停板现象反映了资金博弈的动态平衡,而烂板策略正是捕捉涨停板短暂打开时的交易机会。该策略结合L2行情数据和Python量化框架,通过参数化规则识别特定形态的烂板股票,在风险可控前提下追求超额收益。实战中需严格遵循动态仓位管理和止损纪律,适用于A股市场短线交易。高频交易与量化分析技术的结合,为投资者提供了新的alpha挖掘工具。

weixin_30432579的博客 365

jpa多对多+中间表的查询,删除,添加

jpa多对多+中间表的查询,删除,添加 实体类数据库如下: 表单类 资产类 中间表:为双主键模式,head_id为表单

weixin_45631100的博客 4086

基于JAVA的GB28181实现之SIP服务核心组件解析

本文深入解析了基于JAVA的GB28181标准中SIP服务的核心组件实现,包括协议栈选择、消息处理引擎、事务管理器等关键技术点。通过实战案例分享海康威视、大华设备的特殊处理技巧,并提供性能优化和常见问题排查指南,帮助开发者高效构建稳定的视频监控系统。

weixin_30892037的博客 264

hibernate里批量删除

假设上一步结果是personList,然后传进去就可以了。调用这两个方法,就可以实现优雅的批量删除。可以用 hibernate自带的方法。1、先根据id集合查。

赵达宇的博客 609

当OTN网络遭遇LOS告警:5个运维老手才知道的故障定位技巧(含CA动作对照表)

本文深入解析OTN网络中LOS告警的实战定位技巧,涵盖光功率深度诊断、模块差异分析及核心的CA动作机制。通过逆向追踪告警流与对照速查表,帮助运维人员快速锁定故障段落,区分硬软故障,并掌握系统健康度评估方法,从而提升排障效率与网络稳定性。

weixin_29266007的博客 554

GPU服务器维修全流程:从检测到解锁

《GPU服务器维修维保全流程指南》摘要:本文系统介绍GPU服务器从检测到解锁的完整维修流程。检测环节包含物理检查(氧化层、散热、PCB板)和电子诊断(ECC报错率、电源波动等);核心维修技术涵盖PCB板修复(微孔镀铜、BGA返修)和芯片级维修(成功率78-92%);解锁验证阶段包括性能解锁(VBIOS重写)和72小时稳定性测试。文末提供故障速查表及维保建议,强调定期除尘可降低38%故障率,推荐环境粉尘浓度控制在≤0.3mg/m³。

2401_89353317的博客 891

hibernate5 增加、修改、删除和执行SQL

hibernate5 增加、修改、删除和执行SQL

zdh13370188237的博客 584

漫画安全HIDS、EDR、NDR、XDR

漫画安全HIDS、EDR、NDR、XDR

墨痕诉清风的博客 3447

hibernate 多对多操作删除

hibernate 多对多操作 关键字: hibernate 多对多操作 多对多的两种映射形式: 一。映射多对多关系 老师Teacher 与 课程Course 是一个多对多的关系,XMl配置如下。 三个表的表结构 1. tbl_course.sql     create table "SCOTT"."TBL_COURSE"(       ...

qingfengxia2013的专栏 209

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hibernate--多对多关系的表达、配置与操作(保存、修改、删除)详解

创建表 创建sys_user、sys_role、sys_user_role三张表: 创建实体 User: public class User { //主键 private Long user_id; private String user_code; private String user_name; private String user_password; private Cha...

吴声子夜歌的博客 739

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Hibernate 多对多 删除操作(many-to-many)续

Hibernate 多对多 删除操作(many-to-many)续 先往数据库里插入一些记录:public void testSave() { Session session = HibernateSessionFactory.getSession(); session.beginTransaction(); // create course Course c1

上班搞IT,下班搞ITF。 2308

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HIbernate--多对多的级联操作(保存、更新、删除)详解

级联操作 多对多的级联操作同一对多和多对一是一样的。如果只保存单独的一方是不可以的,还是需要保存双方的。如果想保存一方就需要设置级联操作。同样需要设置主控方。 创建表 创建sys_user、sys_role、sys_user_role三张表: 创建实体 User: public class User { //主键 private Long user_id; private String u...

吴声子夜歌的博客 1400

java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除

hibernate执行多对多关联查询时,关联表数据被删除本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个表的中间表数据被删除,麻烦各位大牛看一下,很急,解决立马结贴,谢谢了!ZqAdminPermission.hbm.xmlZqAdminModules.hbm.xml根据ID查询ZqAdminPermiss...

weixin_39610353的博客 339

在Spring Data JPA和Hibernate中,实现多表关联的操作(包括一对一、一对多、多对一、多对多的查询、删除、关联插入)实现过程

在Spring Data JPA和Hibernate中,实现多表关联的操作(包括一对一、一对多、多对一、多对多的查询、删除、关联插入)实现过程

weixin_45428910的博客 644

Hibernate之多对多

数据库的多对多(点击查看一对多的关联关系) 数据库中不能直接映射多对多 处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多 注1:数据库多表联接查询,永远就是二个表的联接查询 注2:交叉连接 注3:外连接:left(左)/right(右)/full(左右) 主从表:连接条件不成立时,主表记录永远保留,与null匹配 例如三表:A B AB select * from A,B,AB...

TangXS的博客 275

Hibernate多对多删除问题的解决

Hibernate多对多的例子不少,但仔细一看,大多数都是保存的,删除谈的少,但问题还不少,因此有必须简单测试一下,以下我们来个简单的多对多关系建立 老师Teacher 与 课程Course 是一个多对多的关系,Pojo与XMl配置如下。 Pojo Java代码 /** *CourseEntity *seetable:tbl_course ...

weixin_30338743的博客 82

hibernate关联关系(多对多)

1. 数据库的多对多 1.1 数据库中不能直接映射多对多 处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多 注1:数据库多表联接查询 永远就是二个表的联接查询 A B C D t1 C t2 D t3 注2:交叉连接 注3:外连接:left(左)/right(右)/full(左右) 主从表:连接条件不成立时,主表记录永远保留,与null匹配 A B AB select...

weixin_45176963的博客 127

java hibernate 多对多_java – Hibernate多对多删除关系

我有一个hibernate多对多关系的问题:当我从我的集合中删除一个项目时,它不会在我的数据库中删除.我知道有很多类似的问题,但我没有通过阅读来修复我的问题.我已经为它编写了一个JUnit测试用例.我的协会是建筑物和用户之间:@Testpublic void testBuildingManyToMany(){//Create 2 buildingsBuilding building = creat...

weixin_36137509的博客 129

Hibernate多对多

Hibernate多对多 数据库的多对多: 数据库中不能直接映射多对多 处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多 注:数据库多表联接查询,永远就是二个表的联接查询 hibernate的多对多: hibernate可以直接映射多对多关联关系(看作两个一对多) 多对多关系注意事项:一定要定义一个主控方 讲解下一对多的自联: TreeNode.hbm.xml <?xml v...

weixin_43710113的博客 444
上一篇: Java Web 应用框架的下一个王者是谁?
下一篇: Hibernate 多对多 删除操作(many-to-many)续
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值