Hibernate的学习之路二十四(放弃外键的维护)
来源:互联网 发布:看图纸用什么软件 编辑:程序博客网 时间:2024/06/08 01:19
前言
这篇主要是说明了,放弃外键,在数据库多对多的情况下要放弃,其中一方的外键维护。因为会造成语句的多余。
比如A表和B表,A里有B的维护,B里有A的维护,如果互相修改的话,映射一下,A和B都会生成1个sql语句来修改,一共2条来执行相同结果的sql语句,其实只要修改一次就可以。
当然如果在一对多的情况下,就不需要去放弃外键的维护了,还有就是放弃的一方 是一的。需要设置属性。
分析
技术分析之让某一方放弃外键的维护,为多对多做准备
1. 先测试双方都维护外键的时候,会产生多余的SQL语句。 * 想修改客户和联系人的关系,进行双向关联,双方都会维护外键,会产生多余的SQL语句。 * 产生的原因:session的一级缓存中的快照机制,会让双方都更新数据库,产生了多余的SQL语句。2. 如果不想产生多余的SQL语句,那么需要一方来放弃外键的维护! * 在<set>标签上配置一个inverse=”true”.true:放弃.false:不放弃.默认值是false * <inverse="true">
以下是代码,记得要在mapping文件里设置inverse,只要设置一对多中的一,是放弃外键维护就行,外键是没有这个属性的。/** * 放弃外键的维护 * 需求:让熊大联系人属于小风客户 */@Testpublic void run11(){Session session = HibernateUtils.getCurrentSession();Transaction tr = session.beginTransaction();// 先获取到小风的客户Customer c2 = session.get(Customer.class, 2L);Linkman l1 = session.get(Linkman.class, 1L);// 做双向的关联c2.getLinkmans().add(l1);l1.setCustomer(c2);// 不用修改tr.commit();}
其他
至于为什么要在一中设置inverse来设置,而不在多中设置呢?一对多, 一个人维护多个,和多个人主动找一个人维护。肯定是后者比较简单呀。
阅读全文
0 0
- Hibernate的学习之路二十四(放弃外键的维护)
- hibernate框架一对多之放弃外键的维护(十五)
- Hibernate的学习之路十四(事务)
- IOS学习之路二十四(custom 漂亮的UIColor)
- angularJS学习之路(二十四)---创建服务的五大方法---service
- hibernate框架的查询策略(二十四)
- Hibernate入门BLOG[十二、Hibernate的一对多的inverse放弃维护关系,提升效率]
- android之RxJava的学习,从浅到深,从入门到别放弃(二)
- Hibernate的学习之路二(入门)
- 深度学习(二十四)矩阵分解之基于k-means的特征表达学习
- 深度学习(二十四)矩阵分解之基于k-means的特征表达学习
- 深度学习(二十四)矩阵分解之基于k-means的特征表达学习
- Flex学习之路之二十四 Spark ButtonBar 和 TabBar的使用
- hibernate外键是否维护(inverse)的问题
- swift学习之路(十四)类的定义
- Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
- Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
- Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
- ios-RunLoop使tableView流畅化
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- C# 数据类型
- BZOJ2659: [Beijing wc2012]算不出的算式
- jsp的九大内置对象的简介及其应用
- Hibernate的学习之路二十四(放弃外键的维护)
- apk瘦身
- SpringBoot学习(二)
- [蓝桥杯]历届试题 错误票据
- 24 设备树里描述spi设备
- 括号字符串的有效性和最长有效长度
- iOS下音视频通信的实现-基于WebRTC
- 知识图谱+Recorder︱中文知识图谱API与工具
- 谁拿了最多的奖学金-vijos