hibernate笔记(三)

1. 一对多

1.1 一对多关系

  • 什么样关系属于一对多?
    • 一个部门对应多个员工,一个员工只能属于某一个部门。
    • 一个客户对应多个联系人,一个联系人只能属于某一个客户。
  • 一对多的建表原则:
    -

1.1.1 映射文件配置

一的一方:
在这里插入图片描述
多的一方:
在这里插入图片描述

1.1.2 测试

在这里插入图片描述

1.1.3 一对多的级联操作

  • 什么叫做级联
    • 级联指的是,操作一个对象的时候,是否会同时操作其关联的对象。
    • 级联是有方向性
      • 操作一的一方的时候,是否操作到多的一方
      • 操作多的一方的时候,是否操作到一的一方

操作:在一的一方set标签上加cascade=“save-update”
或者在多的一方many-to-one上加cascade=“save-update”
如果是想级联删除就是cascade=“delete”.

1.1.4 一对多设置了双向关联产生多余的SQL语句

  • 解决多余的SQL语句
    • 单向维护:
    • 使一方放弃外键维护权:
      • 一的一方放弃。在set上配置inverse=”true”

2. 多对多

2.1 多对多关系

  • 什么样关系属于多对多?
    • 一个学生可以选择多门课程,一门课程也可以被多个学生选择。
    • 一个用户可以选择多个角色,一个角色也可以被多个用户选择。
  • 多对多的建表原则: 在这里插入图片描述

2.1.1 映射关系

在这里插入图片描述

2.1.2 测试

在这里插入图片描述

2.1.3 多对多级联(同一对多)

3. Hibernate的抓取策略(优化)

3.1 延迟加载的概述

3.1.1 什么是延迟加载

延迟加载:lazy(懒加载)。执行到该行代码的时候,不会发送语句去进行查询,在真正使用这个对象的属性的时候才会发送SQL语句进行查询。

3.1.2 延迟加载的分类

  • 类级别的延迟加载
    • 指的是通过load方法查询某个对象的时候,是否采用延迟。session.load(Customer.class,1l);
    • 类级别延迟加载通过上的lazy进行配置,如果让lazy失效
      • 将lazy设置为false
      • 将持久化类使用final修饰
      • Hibernate. Initialize()
  • 关联级别的延迟加载
    • 指的是在查询到某个对象的时候,查询其关联的对象的时候,是否采用延迟加载。
      Customer customer = session.get(Customer.class,1l);
      customer.getLinkMans();----通过客户获得联系人的时候,联系人对象是否采用了延迟加载,称为是关联级别的延迟。
    • 抓取策略往往会和关联级别的延迟加载一起使用,优化语句。

3.2 抓取策略

3.2.1抓取策略的概述

  • 通过一个对象抓取到关联对象需要发送SQL语句,SQL语句如何发送,发送成什么样格式通过策略进行配置。
    • 通过或者上通过fetch属性进行设置
    • fetch和这些标签上的lazy如何设置优化发送的SQL语句

3.2.2 set标签上的fetch和lazy

  • fetch:抓取策略,控制SQL语句格式
    • select :默认值,发送普通的select语句,查询关联对象
    • join :发送一条迫切左外连接查询关联对象
    • subselect :发送一条子查询查询其关联对象
  • lazy:延迟加载,控制查询关联对象的时候是否采用延迟
    • true :默认值,查询关联对象的时候,采用延迟加载
    • false :查询关联对象的时候,不采用延迟加载
    • extra :及其懒惰。

在实际开发中,一般都采用默认值。如果有特殊的需求,可能需要配置join。

3.2.3 many-to-one标签上的fetch和lazy

  • fetch :抓取策略,控制SQL语句格式。
    • select :默认值,发送普通的select语句,查询关联对象。
    • join :发送一条迫切左外连接。
  • lazy :延迟加载,控制查询关联对象的时候是否采用延迟。
    • proxy :默认值,proxy具体的取值,取决于另一端的上的lazy的值。
    • false :查询关联对象,不采用延迟。
    • no-proxy :(不会使用)

在实际开发中,一般都采用默认值。如果有特殊的需求,可能需要配置join。

3.2.4 批量抓取

一批关联对象一起抓取,batch-size

补充:QBC查询中将结果集转为MAP和对象

在这里插入图片描述

《基于S7-200的全自动洗衣机控制系统》一文主要探讨了如何利用西门子S7-200系列微型可编程控制器(PLC)来设计并实现全自动洗衣机控制系统。该系统旨在提升洗衣机的自动化水平,满足现代生活及工业生产对洗衣机功能的更高要求。S7-200系列PLC凭借其高性能与经济性,成为理想的控制设备,其丰富的设计知识和方法可确保系统的稳定性和可靠性。 洗衣机的历史可追溯至19世纪,从最初的木制手摇洗衣机到电动洗衣机,再到如今的全自动洗衣机,其发展经历了从半自动到全自动再到智能化的演变。全自动洗衣机可自动完成除放衣、取衣和启动之外的所有洗衣步骤,极大地便利了人们的生活。在工业领域,洗衣机也在不断进化,追求更高的效率、更低的能耗和更优化的结构。 全自动洗衣机的发展历程见证了技术创新的足迹。1932年,前装式滚筒全自动洗衣机的出现标志着洗衣机进入新阶段,其在一个滚筒内完成洗涤、漂洗和脱水全过程。此后,洗衣机技术不断进步,包括微电脑控制、新型洗涤方式、高速脱水和低噪音等特性。近年来,中国在全自动洗衣机制造技术上取得显著进步,产品种类丰富,技术性能优良,产量逐年增长。 全自动洗衣机的控制系统有多种类型,如单片机控制、PLC控制和工业控制计算机集中控制。单片机控制虽小巧、功耗低,但开发难度大,硬件保护机制复杂,可能增加故障率和维修成本;工业控制计算机则适合大型控制系统,提供强大的软硬件支持。而PLC因其卓越的抗干扰能力、高可靠性、编程便利性、操作简便性、维护快捷性和设计灵活性等优势,成为全自动洗衣机控制系统的首选。S7-200系列PLC的模块化设计使系统扩展和维护更简单,能够快速完成设计和调试,推动洗衣机控制系统向更高级别的自动化迈进。基于S7-200的全自动洗衣机控制系统是现代科技与传统家电的完美结合,体现了PLC技术在日常生活中的广泛应用和价值。通过深入理解和掌握PLC的工作原理和编程技巧,可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值