




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hibernate 关联映射第二章回顾与作业点评Hibernate的基本原理?Hibernate的优势?使用Hibernate操作数据库的步骤?实体对象的三种状态?预习检查如何配置单向一对多关联关系?如何配置单向多对一关联关系?如何配置双向一对多关联关系?cascade属性和inverse属性的作用和区别?如何配置多对多关联关系?本章任务完善租房网系统:实现街道和区的关联管理实现租房信息的发布本章目标掌握many-to-one关联掌握one-to-many关联掌握many-to-many关联实体关联关系实体之间的关系关联关系通过一个对象持有另一个对象的实例泛化关系通过对象之间的继承方法来实现类
2、与类之间最普遍的关系就是关联关系在UML 语言中,关联是有方向的单向多对一关联在类与类之间各种各样的关系中,多对一的单向关联关系和关系数据库中的外键参照关系最匹配单向多对一关联是最常见的单向关联关系在租房系统中从街道到区的关联就是典型的多对一关联租房系统中街道和区的实体类public class District implements java.io.Serializable private Long id; private String name; /* 默认的构造方法 */ public District() /省略setter/getter方法区public class Street i
3、mplements java.io.Serializable private Long id; private District district; private String name; /* 默认的构造方法 */ public Street() public District getDistrict() return this.district; public void setDistrict(District district) this.district = district; / 省略部分setter/getter方法街道租房系统中街道和区的映射文件 District.hbm.xm
4、l Street.hbm.xml与Street 对应的street 表是通过district_id 的值关联至district 表的设置关系的字段设置关系的对象many-to-one元素常用属性many-to-one 元素的常用属性属性含义和作用必须默认值name映射类属性的名称 Yclass关联类的完全限定名Ncolumn关联的字段Nnot-null设置关联的字段的值是否可以为空Nfalselazy指定关联对象是否使用延迟加载以及延迟加载的策略Nproxyfetch设置抓取数据的策略Nselect配置映射文件并测试hibernate.cfg.xml中指定映射文件测试 District dis
5、trict = new District();Street street1 = new Street();Street street2 = new Street();Street street3 = new Street();district.setName(丰台); /设置区的名称street1.setName(广安路); /设置街道名称street1.setDistrict(district); /设置街道所在区street2.setName(大红门路);street2.setDistrict(district);street3.setName(南苑路);street3.setDistri
6、ct(district);设置街道和区SessionFactory sessionFactory = null;Session session = null;Transaction tx= null;try sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); tx= session.beginTransaction(); session.save(district); session.save(street1); sessi
7、on.save(street2); session.save(street3); mit();catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();添加街道和区指导实现单向多对一关联关系训练要点Hibernate配置文件配置ORM 映射文件配置双向一对多关联需求说明实现区和街道关联关系实现思路编写实体类。在Street类中设置District属性编写ORM 映射文件修改Hibernate 配置文件根据需求编写业务类和Dao类
8、,并进行测试完成时间:15分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解单向一对多关联由“一” 的一端加载“多” 的一端,关系由“一”的一端来维护在JavaBean中是在“一”的一端中持有“多”的一端的集合Hibernate把这种关系反映到数据库的策略是在“多”的一端的表上加一个外键指向“一”的一端的表在“一”的一端维护关系是不提倡的将“多”的一端的外键添加非空约束,导致数据不能插入插入数据效率降低实体类public class Street implements java.io.Serializable private Long id; private Long di
9、strict_id; private String name; /* 默认的构造方法 */ public Street() / 省略部分setter/getter方法 public Long getDistrict_id() return district_id; public void setDistrict_id(Long district_id) this.district_id = district_id; 街道实体类public class District implements java.io.Serializable private Long id; private String
10、 name; private Set streets = new HashSet(); /* 默认的构造方法 */ public District() / 省略部分setter/getter方法 public Set getStreets() return this.streets; public void setStreets(Set streets) this.streets = streets; 区实体类映射文件 Street.hbm.xml District.hbm.xml设置关系的字段设置关系的对象使用set元素和one-to-many元素配置一对多关联使用set元素和one-to-
11、many元素配置一对多关联set元素的常用属性set元素的常用属性属性含义和作用必须默认值name映射类属性的名称 Ytable关联类的目标数据库表Nlazy指定关联对象是否使用延迟加载以及延迟加载的策略Nproxyfetch设置抓取数据的策略Nselect修改测试类检查结果hibernate.cfg.xml中指定映射文件测试 District district = new District();Street street1 = new Street();Street street2 = new Street();Street street3 = new Street();district.s
12、etName(海淀);street1.setName(中关村大街);street2.setName(知春路);street3.setName(学院路);district.getStreets().add(street1);district.getStreets().add(street2);district.getStreets().add(street3);设置街道和区SessionFactory sessionFactory = null;Session session = null;Transaction tx= null;try sessionFactory = new Configu
13、ration().configure().buildSessionFactory(); session = sessionFactory.openSession(); tx= session.beginTransaction(); session.save(street1); session.save(street2); session.save(street3); session.save(district); mit();catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.clos
14、e(); sessionFactory.close();添加街道和区双向一对多关联单向一对多单向多对一同时配置两者就成了双向一对多关联指导实现双向一对多关联关系训练要点Hibernate配置文件的配置ORM 映射文件的配置双向一对多关联需求说明实现区和街道的关联关系实现思路编写实体类在Street类中设置District属性在District 类中设置Set 属性用于保存包含的Street编写ORM 映射文件修改Hibernate 配置文件根据需求编写业务类和Dao类,并进行测试完成时间:30分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解小结如何配置单向一对多关联关系?
15、如何配置单向多对一关联关系?如何配置双向一对多关联关系?cascade属性当设置了cascade属性不为none时,Hibernate 会自动持久化所关联的对象cascade 属性的设置会带来性能上的变动,需谨慎设置Cascade属性值属性值含义和作用all对所有操作进行级联操作save-update执行保存和更新操作时进行级联操作delete执行删除操作时进行级联操作none对所有操作不进行级联操作inverse属性术语“inverse”直译为“反转”在Hibernate 中,inverse属性指定了关联关系中的方向关联关系中,inverse=false 的为主动方,由主动方负责维护关联关系
16、在一对多关联中,将one 方的inverse 设置为true,这将有助性能的改善inverse指的是关联关系的控制方向,而cascade指的是层级之间的连锁操作练习cascade和inverse的使用训练要点cascade属性的使用inverse属性的使用需求说明使用cascade和inverse 优化区和街道关联关系完成时间:20分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解多对多关联案例分析2-1某OA系统需要完成的功能列出项目的参加人员列出某个人参加的所有项目多对多关联案例分析2-2对雇员和项目需要创建两个表:employee 和project雇员和项目间是典型的多对多关系多对多关联 Project 一方的配置Employee 一方的配置练习实现租房信息的发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《商务英语口译》课件-Business Interpreting
- 2025年消防执业资格专业技能提升题库:实战演练模拟试卷
- 2025年监理工程师职业能力测试卷(团队协作与沟通技巧)
- 2025年乡村医生考试题库:农村慢性病管理疾病康复试题
- 2025年花艺师职业资格考试真题卷:花卉市场拓展策略与实施试题
- 2025年烘焙师职业资格考试真题卷:中式糕点制作与风味特色试题
- 2025年消防执业资格考试:消防应急通信保障通信设备检测试题
- 创业管理自我介绍
- 剪纸瓶子教学课件
- 内在力量训练课件
- 【公开课】同一直线上二力的合成+课件+2024-2025学年+人教版(2024)初中物理八年级下册+
- 2023年拟任县处级领导干部任职资格考试测试题
- 欧盟ELV(汽车)指令课件
- 2023年无锡职业技术学院单招职业适应性测试笔试题库及答案解析
- sp病种针推新针推颈椎病
- 消防水泵和稳压泵安装检验批质量验收记录
- 500kV变电站工程构支架吊装专项施工方案
- 2021年上海临港外服人力资源有限公司招聘笔试试题及答案解析
- 生物安全柜及应用课件
- 酒店游泳池系统维保合同
- 现代商业空间展示设计ppt
评论
0/150
提交评论