版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料目 录1.1在容器外实现hibernate框架继承映射关系及实例(第1部分)21.1.1继承关系的映射实现方式一21.1.2继承关系的映射实现方式一的具体实现31.1.3为每个数据库表建立映射文件151.1 在容器外实现hibernate框架继承映射关系及实例(第1部分)1.1.1 继承关系的映射实现方式一1、为什么要应用继承关系设计各个po类由于“学生”和“老师”都包含有共性的“属性”,为了减少po类中的重复,需要应用继承设计方案。abstractperson类以及其两个子类student类和teacher类。2、为什么要应用“第一种实
2、现方式”由于数据库表是满足“第一种实现方式”的要求,因此采用“第一种实现方式”。3、遵守“第一种实现方式”的要求每个具体子类映射成单个数据库表,而抽象基类不参与映射,每个具体类一张表。1.1.2 继承关系的映射实现方式一的具体实现1、在项目中设计各个持久化(1)departmentpo类,包名称为com.px1987.sshwebcrm.dao.pobject提供两个成员属性,并为它们提供get/set方法private int id;private string depname;private string depdescriptor;最后的代码如下package com.px1987.ss
3、hwebcrm.dao.pobject;public class departmentpo private int id;overridepublic int hashcode() final int prime = 31;int result = 1;result = prime * result+ (depdescriptor = null) ? 0 : depdescriptor.hashcode();result = prime * result + (depname = null) ? 0 : depname.hashcode();result = prime * result +
4、id;return result;overridepublic boolean equals(object obj) if (this = obj)return true;if (obj = null)return false;if (getclass() != obj.getclass()return false;departmentpo other = (departmentpo) obj;if (depdescriptor = null) if (other.depdescriptor != null)return false; else if (!depdescriptor.equal
5、s(other.depdescriptor)return false;if (depname = null) if (other.depname != null)return false; else if (!depname.equals(other.depname)return false;if (id != other.id)return false;return true;public int getid() return id;public void setid(int id) this.id = id;public string getdepname() return depname
6、;public void setdepname(string depname) this.depname = depname;public string getdepdescriptor() return depdescriptor;public void setdepdescriptor(string depdescriptor) this.depdescriptor = depdescriptor;private string depname;private string depdescriptor;public departmentpo() (2)abstractpersonpo类,包名
7、称为com.px1987.sshwebcrm.dao.pobject在其中提供两个成员属性,并为它们提供get/set方法private int id;private string personname;private departmentpo department; /由于abstractperson类与departmentpo类存在“一对一”的关系最后的代码如下:package com.px1987.sshwebcrm.dao.pobject;public abstract class abstractpersonpo private int id;overridepublic int h
8、ashcode() final int prime = 31;int result = 1;result = prime * result+ (department = null) ? 0 : department.hashcode();result = prime * result + id;result = prime * result+ (personname = null) ? 0 : personname.hashcode();return result;overridepublic boolean equals(object obj) if (this = obj)return t
9、rue;if (obj = null)return false;if (getclass() != obj.getclass()return false;abstractpersonpo other = (abstractpersonpo) obj;if (department = null) if (other.department != null)return false; else if (!department.equals(other.department)return false;if (id != other.id)return false;if (personname = nu
10、ll) if (other.personname != null)return false; else if (!personname.equals(other.personname)return false;return true;public int getid() return id;public void setid(int id) this.id = id;public string getpersonname() return personname;public void setpersonname(string personname) this.personname = pers
11、onname;public departmentpo getdepartment() return department;public void setdepartment(departmentpo department) this.department = department;public abstract void workstudy(string content); /由于abstractperson类为抽象类private string personname;private departmentpo department; /由于abstractperson类与department类
12、存在“一对一”的关系public abstractpersonpo() (3)studentpo类,包名称为com.px1987.sshwebcrm.dao.pobject、选择基类为com.px1987.sshwebcrm.dao.pobject.abstractpersonpo在该类中定义出下面的成员属性,并提供get/set方法private int studentlevel;private string studentmajor;编程该类中的方法package com.px1987.sshwebcrm.dao.pobject;public class studentpo extends
13、 abstractpersonpo private int studentlevel;overridepublic int hashcode() final int prime = 31;int result = super.hashcode();result = prime * result + studentlevel;result = prime * result+ (studentmajor = null) ? 0 : studentmajor.hashcode();return result;overridepublic boolean equals(object obj) if (
14、this = obj)return true;if (!super.equals(obj)return false;if (getclass() != obj.getclass()return false;studentpo other = (studentpo) obj;if (studentlevel != other.studentlevel)return false;if (studentmajor = null) if (other.studentmajor != null)return false; else if (!studentmajor.equals(other.stude
15、ntmajor)return false;return true;public int getstudentlevel() return studentlevel;public void setstudentlevel(int studentlevel) this.studentlevel = studentlevel;public string getstudentmajor() return studentmajor;public void setstudentmajor(string studentmajor) this.studentmajor = studentmajor;priva
16、te string studentmajor;public studentpo() overridepublic void workstudy(string content) (4)teacherpo类,包名称为com.px1987.sshwebcrm.dao.pobject,继承com.px1987.sshwebcrm.dao.pobject.abstractpersonpo在该类中定义出下面的成员属性,并提供get/set方法private float monthsalary;private string coursename;编程该类中的方法package com.px1987.sshw
17、ebcrm.dao.pobject;public class teacherpo extends abstractpersonpo private float monthsalary;overridepublic int hashcode() final int prime = 31;int result = super.hashcode();result = prime * result+ (coursename = null) ? 0 : coursename.hashcode();result = prime * result + float.floattointbits(monthsa
18、lary);return result;overridepublic boolean equals(object obj) if (this = obj)return true;if (!super.equals(obj)return false;if (getclass() != obj.getclass()return false;teacherpo other = (teacherpo) obj;if (coursename = null) if (other.coursename != null)return false; else if (!coursename.equals(oth
19、er.coursename)return false;if (float.floattointbits(monthsalary) != float.floattointbits(other.monthsalary)return false;return true;public float getmonthsalary() return monthsalary;public void setmonthsalary(float monthsalary) this.monthsalary = monthsalary;public string getcoursename() return cours
20、ename;public void setcoursename(string coursename) this.coursename = coursename;private string coursename;public teacherpo() / todo auto-generated constructor stuboverridepublic void workstudy(string content) 1.1.3 为每个数据库表建立映射文件1、明确对数据库表设计的要求首先要明确为什么要采用第一种方式、该方式的条件对数据库表设计的要求由于本项目中的数据库表满足hibernate中的第
21、一种继承方案。2、各个映射文件之间的关系department类、student类和teacher类都有相应的映射文件,而abstractperson类由于是抽象类并且不参与映射,因此不需要相应的映射文件。下图显示了持久化类、映射文件和数据库表之间的对应关系。department类student类abstractperson类teacher类department.hbm.xmlstudent.hbm.xmlteacher.hbm.xmldepartment表student表teacher表注意:如果abstractperson类不是抽象类,即abstractperson类本身也能被实例化,那么还需要为abstractperson类创建对应的abstractperson表,此时student表和teacher表的结构仍然和上面图中所示的一样。这意味着在abstractperson表、student表和teacher表中都定义了相同的personname字段以及参照department表的外键depid。另外,还需为abstractperson类创建单独的abstractperson.hbm.xml文件。3、 创建映射文件-departmentpo.hbm.xml(1) 新建departmentpo.hbm.xml文件(2)该文件的内容如下: 从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 片酬合同范本
- 急诊室公共卫生事件应对计划
- 提高财务领导力的培养方案计划
- 办公设备维修合同三篇
- 如何通过维护品牌影响力保持竞争优势计划
- 学校体育活动的开展计划
- 2023年中级经济师之中级经济师金融专业题库含答案(夺分金卷)
- 美容院感动顾客十件小事
- 人教版小学数学教案1-6年级教案:练习课(练习九②)【教案】
- 53模拟试卷初中语文八年级下册名著导读(二)《钢铁是怎样炼成的》
- 沪教牛津版七年级上册初一英语全册单元测试卷(含期中期末试卷)
- 《数字货币对银行的影响研究3200字(论文)》
- 三年级上册科学课件-第5课植物的“身体”|青岛版(六年制)
- DB3702-T 0016.2-2023实景三维青岛建设技术规范第2部分:三维模型数据采集与处理
- LY/T 2487-2015木质地板冲击噪声测试方法
- GB/T 6052-2011工业液体二氧化碳
- GB/T 29347-2012法庭科学枪械射击弹壳痕迹检验规范
- GB/T 27548-2011移动式升降工作平台安全规则、检查、维护和操作
- GB/T 20467-2006软质泡沫聚合材料模压和挤出海绵胶制品成品的压缩性能试验
- 教科版四年级上册科学教学计划附进度表
- GB 4806.7-2016食品安全国家标准食品接触用塑料材料及制品
评论
0/150
提交评论