18.01.04,web学习第三十七天,还有一年,努力吧青年 hibernate第三天 一对多,多对多
2018-01-04 21:53
567 查看
37.hibernate第三天
1. Union 同盟,联盟grant:同意 认同。
convert:使转变,使改变
2. session 的缓存域,session对象中有一个可以存放对象的集合。
查询时:第一次查询时,会将对象放入缓存中,再次查询,不再 查询数据库。
修改时:会使用快照对比修改前和修改后的对象的属性的区别, 只执行一次修改。
3. (一对多的封装)
映射对象时,varchar对应String,char对应Character,bigint对应Long。
一对多封装时在1的一方对象使用Set集合表示一对多关系。
多的一方持有一的引用。
配置文件里外键没封。
Association 协会,社团; 联合,联系; 联想;
Transient 短暂的,转瞬即逝的,临时的。
对 一对多和多对一数据的操作:(重要)
不论是增删改还是啥,都是对一方的集合和多方的引用的操作。
如果是多方在增加:new 出多方添加到一方集合中,多方设置一方引用。
如果是多方被删除:多方的引用赋值null,一方的集合去除多方。
此处错误由于配置出错 |
这是由于new出来的对象是瞬时对象,需要先save再提交。 |
操作的进阶1: 级联操作:目的:简化代码 当我们在增删改客户时,需要对多个联系人进行save()方法。 我们想在save客户的时候就给我们一同save联系人。 级联操作是双向的,可以在一方配,也可以在多方配。 如何配: cascade="" (倾泻,小瀑布):配完之后相应的就不用 save()操作了 |
操作的进阶2: Inverse属性提高效率:一的一方不维护外键 多的一方不可以放弃维护 记住:当一的一方配置了inverse时,就不需要有维护关系的添加到集合的代码了(写不写无所谓):例: |
当1的一方删除时 因为存在外键所以有两种方案删除1的一方: 1)inverse设置成false(维护外键),当执行session.selete方法时, 多的一方的外键置空。一的一方删除。 2)inverse设置成true(维护外键),然后cascade=”delete”,设置级联删除,有联系的一起删除。 |
多对多需要第三方表。
多对多的对象表达,均使用set集合的形式。
当我们配置update时,session一创建不论什么操作都会帮我们建表。
|
该案例不存在外键,都是以主键的形式存在第三张表以维护多对多的关系。 多对多两方在维护关系时因为是向第三张表插入数据,所以他们在维护关系时必须有一方放弃维护操作(否则第三张表主键重复插入),根据业务判定谁放弃。 如何放弃维护:1)配置文件直接inverse=‘true’ 2)或者直接维护对象时不写维护关系代码 |
实现多对多中为一个人物添加一个角色: 在为人物添加角色时,人物是持久化状态,而角色是瞬时状态,需要对角色进行save保存,可实现cascade简化代码操作: 略 |
相关文章推荐
- 18.01.06,web学习第三十八天,还有一年,努力吧青年 hibernate第四天 HQL,Criteria,离线对象,查询策略
- 17.11.13,web学习第三天,还有一年,努力吧青年!
- 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作
- 17.12.13,web学习第二十五天,还有一年,努力吧青年动态代理
- 17.11.16,web学习第五天,还有一年,努力吧青年!
- 18.01.08,web学习第三十九天,还有一年,努力吧青年 struts2第一天 搭建框架
- 17.11.22,web学习第九天,还有一年,努力吧青年
- 18.02.11,web学习第五十七天,还有半年,努力吧青年 bos第三天 easyUI messager,menubutton菜单,validatebox,web-INF内页面访问
- 17.12.11,web学习第二十三天,还有一年,努力吧青年Listener
- 17.12.01,web学习第十六天,还有一年,努力吧青年cookie和session
- 17.12.26,web学习第三十三天,还有一年,努力吧青年 商城项目第六天 ajax,文件上传
- 17.12.16,web学习第二十七天,还有一年,努力吧青年redis
- 17.12.05,web学习第十九天,还有一年,努力吧青年事务mysql
- 17.12.12,web学习第二十四天,还有一年,努力吧青年过滤器Filter
- 17.12.06,web学习第二十天,还有一年,努力吧青年商城增删改查记忆
- 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作
- 17.11.14,web学习第四天,还有一年,努力吧青年!
- 17.11.15,web学习第四天,还有一年,努力吧青年!
- 17.11.21,web学习第八天,还有一年,努力吧青年
- 18.01.11,web学习第四十天,还有一年,努力吧青年 struts2第二天 action创建+result处理+获取数据方式