好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Hibernate应用课堂.ppt

119页
  • 卖家[上传人]:平***
  • 文档编号:47649128
  • 上传时间:2018-07-03
  • 文档格式:PPT
  • 文档大小:1.14MB
  • / 119 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Hibernate关系映射1₪在面向对象设计和实体模型关系中,对象间关系 一般包括4种:一对一(one-to-one)、一对多 (one-to-many)、多对一(many-to-one)、 多对多(many-to-many) ₪对象是现实世界中具有唯一性的事物 ₪一对一关联类型 :主键关联与唯一外键关联 ₪一对一的主键关联形式是两张关联表通过主键形 成一对一映射关系 ₪唯一外键关联是两张表的主键值不同,使用一个 新添加的字段来作为外键维持一对一关系 ₪单向一对多只需在“一”的一方进行配置,反之就 是单向多对一 ₪双向一对多就是对单向一对多的一种改进24.3 Hibernate关系映射₪ 4.3.1 一对一关联 ₪ 1. 共享主键方式 ₪ 在注册某个论坛会员的时候,往往不但要填写登录账号 和密码,还要填写其他的详细信息,这两部分信息通常 会放在不同的表中,如表4.1、表4.2所示 字 段 名 称数 据 类 型主 键自 增允 许 为 空描 述IDint(4)是ID号USERNAMEvarchar(20)登录账 号PASSWORDvarchar(20)登录密码字 段 名 称数 据 类 型主 键自 增允 许 为 空描 述IDint(4)是增1ID号TRUENAMEvarchar(8)是真实姓名EMAILvarchar(50)是电子邮件表4.1 登录表Login表4.2 详细信息表Detail34.3.1 一对一关联₪ 登录表和详细信息表属于典型的一对一关联关系,可按 共享主键方式进行。

      步骤如下: ₪ ① 创建Java项目,命名为“Hibernate_mapping” ₪ ② 添加Hibernate开发能力,步骤同4.2.1节第4步 HibernateSessionFactory类同样位于org.util包下 ₪ ③ 编写生成数据库表对应的Java类对象和映射文件 ₪ Login表对应的POJO类Login.java:package org.model; public class Login implements java.io.Serializable{private int id; // ID号 private String username; // 登录账号private String password; // 密码private Detail detail; // 详细信息// 省略上述各属性的getter和setter方法 }44.3.1 一对一关联₪Detail表对应的Detail.java:package org.model; public class Detail implements java.io.Serializable{private int id; // ID号private String trueName; // 真实姓名private String email; // 电子邮件private Login login; // 登录信息// 省略上述各属性的getter和setter方法 }54.3.1 一对一关联₪ Login表与Login类的ORM映射文件Login.hbm.xml。

      table=“login“>detaildetail >“>“>64.3.1 一对一关联₪ Detail表与Detail类的ORM映射文件Detail.hbm.xml:“ table=“detail“>“>“>namename表示属性名字,表示属性名字,classclass表表 示被关联的类的名字示被关联的类的名字 cascade=“all”cascade=“all”表明主控类的表明主控类的 所有操作,对关联类也执行同所有操作,对关联类也执行同 样操作样操作 lazy=“false“lazy=“false“表示此关联为立表示此关联为立 即加载即加载74.3.1 一对一关联₪ ④ 在hibernate.cfg.xml文件中加入配置映射文件的语句₪ ⑤ 创建测试类 ₪ 在src文件夹下创建包test,在该包下建立测试类 “Test.java”………… Session Session sessionsession= =HibernateSessionFactory.getSessionHibernateSessionFactory.getSession();(); Transaction Transaction tsts= =session.beginTransactionsession.beginTransaction(); // (); // 创建事务对象创建事务对象 Detail Detail detaildetail=new Detail();=new Detail(); Login Login loginlogin=new Login();=new Login(); login.setUsername(“yanhonglogin.setUsername(“yanhong“);“); login.setPassword(“123“);login.setPassword(“123“); detail.setTrueNamedetail.setTrueName(“(“严红严红“);“); detail.setEmail(“yanhong@“);detail.setEmail(“yanhong@“); // //相互设置关联相互设置关联 login.setDetail(detail); detail.setLogin(login); // //这样完成后就可以通过这样完成后就可以通过SessionSession对象调用对象调用session.save(detailsession.save(detail) )来持久化该对象来持久化该对象 session.save(detailsession.save(detail); ); mit();(); HibernateSessionFactory.closeSessionHibernateSessionFactory.closeSession();(); …………84.3.1 一对一关联₪ ⑥ 运行程序,测试结果。

      ₪ 因为该程序为Java Application,所以可以直接运行在 完全没有操作数据库的情况下,程序就完成了对数据的 插入插入数据后,Login表和Detail表的内容如图4.12 、图4.13所示图4.12 Login表 图4.13 Detail表94.3.1 一对一关联₪ 2. 唯一外键方式 ₪ 唯一外键的情况很多,例如,每个人对应一个房间其 实在很多情况下,可以是几个人住在同一个房间里面, 就是多对一的关系但是如果把这个多变成唯一,也就 是说让一个人住一个房间,就变成了一对一的关系了, 这就是前面说的一对一的关系其实是多对一关联关系的 一种特殊情况对应的Person表和Room表如表4.3、表 4.4所示字 段 名 称数 据 类 型主 键自 增允 许 为 空描 述Idint是增1ID号namevarchar(20)姓名room_idint(20)是房间号字 段 名 称数 据 类 型主 键自 增允 许 为 空描 述idint(4)是增1ID号addressvarchar(100)地址表4.3 Person表表4.4 Room表104.3.1 一对一关联₪ 步骤如下: ₪ ① 在项目Hibernate_mapping的org.model包下编写生成 数据库表对应的Java类对象和映射文件。

      Person表对应的POJO类Person.java: package org.model; public class Person implements java.io.Serializable { private Integer id; private String name; private Room room; // 省略上述各属性的getter和setter方法 } Room表对应的POJO类Room.java: package org.model; public class Room implements java.io.Serializable{ private int id; private String address; private Person person; // 省略上述各属性的getter和setter方法 }114.3.1 一对一关联₪ Person表与Person类的ORM映射文件Person.hbm.xml :// 唯一性约束,实现一对一124.3.1 一对一关联₪ Room表与Room类的ORM映射文件Room.hbm.xml:// 指定关联类的属性名134.3.1 一对一关联₪ ② 在hibernate.cfg.xml文件中加入如下的配置映射文件 的语句。

      ₪ ③ 编写测试代码在src文件夹下的包test的Test类中加 入如下代码:… Person person=new Person(); person.setName(“liumin“); Room room=new Room(); room.setAddress(“NJ-S1-328“); person.setRoom(room); session.save(person); …144.3.1 一对一关联₪ ④ 运行程序,测试结果 ₪ 因为该程序为Java Application,所以可以直接运行在 完全没有操作数据库的情况下,程序就完成了对数据的 插入插入数据后,Person表和Room表的内容如图 4.14、图4.15所示图4.14 Person表 图4.15 Room表154.3.2 多对一单向关联₪ 只要把上例中的一对一的唯一外键关联实例稍微修改就可以变 成多对一步骤如下: ₪ ① 在项目Hibernate_mapping的org.model包下编写生成数据库 表对应的Java类对象和映射文件其对应表不变,Person表对 应的类也不变,对应的Person.hbm.xml文件修改如下:// 主控类所有操作,对关联类也执行同样操作164.3.2 多对一单向关联₪ 而Room表不变,对应的POJO类如下:₪ Room表与Room类的ORM映射文件Room.hbm.xml如下:package org.model; public class Room implements java.io.Serializable{ private int id; private String address; // 省略上述各属性的getter和setter方法 }174.3.2 多对一单向关联₪② 编写测试代码。

      ₪在src文件夹下的包test的Test类中加入如下代码 :… Room room=new Room(); room.setAddress(“NJ-S1-328“); Person person=new Person(); person.setName(“liuyanmin“); person.setRoom(roo。

      点击阅读更多内容
      相关文档
      2024年统编版7年级上册道德与法治课件 3.8.2 敬畏生命.pptx 2024年统编版7年级上册道德与法治课件 1.2.2 做更好的自己.pptx 2024秋新人教PEP英语3年级上册课件 Unit 4 PartA(1) Let’s talk & Ask and answer.pptx 2024秋新人教版化学9年级上册教学课件 第5单元化学反应的定量关系 课题1 质量守恒定律.pptx 2024秋新人教版化学9年级上册教学课件 第1单元走进化学世界 课题2 化学实验与科学探究 第3课时 走进科学探究.pptx 2024秋新人教版化学9年级上册教学课件 第1单元走进化学世界 课题1 物质的变化和性质 第2课时 化学性质和物理性质.pptx 2024年统编版7年级上册道德与法治 第102课 端正人生态度 第1课时 拥有积极的人生态度教学课件.pptx 2024秋新人教版地理7年级上册教学课件 1.2.3 地球与地球仪(第3课时).pptx 2024秋新人教版化学9年级上册课件 第1单元走进化学世界 课题2 化学实验与科学探究 第3课时 走进科学探究.pptx 2024年统编版7年级上册道德与法治课件 4.11.1 探问人生目标.pptx 2024年统编版7年级上册道德与法治 3.8.2 敬畏生命 教学课件.pptx 2024秋新人教版地理7年级上册课件 1.2.3 地球与地球仪(第3课时).pptx 2024年统编版7年级上册道德与法治 3.8.1 认识生命 教学课件.pptx 2024秋新人教版化学9年级上册课件 第5单元化学反应的定量关系 课题1 质量守恒定律.pptx 2024年统编版7年级上册道德与法治 第103课 实现人生价值 第2课时 在奉献中成就精彩人生教学课件.pptx 2024秋新人教版化学9年级上册课件 第5单元化学反应的定量关系 课题2 化学方程式 第1课时 化学方程式的意义及书写.pptx 2024秋新人教版地理7年级上册教学课件 2.3 地图的选择和应用.pptx 2024年统编版7年级上册道德与法治课件 第103课 实现人生价值 第2课时 在奉献中成就精彩人生.pptx 2024秋新人教版化学9年级上册课件 第6单元 碳和碳的氧化物 课题3 2氧化碳的实验室制取.pptx 北师大版(2024)新教材七年级生物下册第四单元第10章第3节《激素调节》精品课件.pptx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.