hibernate关联详解.doc_第1页
hibernate关联详解.doc_第2页
hibernate关联详解.doc_第3页
hibernate关联详解.doc_第4页
hibernate关联详解.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 一对一单向主键关联(很少用到)t_idCardid cardNo1 111111111111111112 2222222222222222t_personid name1 张三2 李四Person.java类关系:public class Person private int id;private String name;private IdCard idCard;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public IdCard getIdCard() return idCard;public void setIdCard(IdCard idCard) this.idCard = idCard;package com.bjpowernode.hibernate;public class IdCard private int id;private String cardNo;public int getId() return id;public void setId(int id) this.id = id;public String getCardNo() return cardNo;public void setCardNo(String cardNo) this.cardNo = cardNo;映射文件关联:Person.hbm.xmlidCard-IdCard.hbm.xml2、 一对一双向主键关联(用的也不多)t_idCardid cardNo1 111111111111111112 2222222222222222t_personid name1 张三2 李四Person.java类关系:public class Person private int id;private String name;private IdCard idCard;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public IdCard getIdCard() return idCard;public void setIdCard(IdCard idCard) this.idCard = idCard;public class IdCard private int id;private String cardNo;private Person person;public int getId() return id;public void setId(int id) this.id = id;public String getCardNo() return cardNo;public void setCardNo(String cardNo) this.cardNo = cardNo;public Person getPerson() return person;public void setPerson(Person person) this.person = person;映射文件关联:Person.hbm.xmlidCardIdCard.hbm.xml3、 一对一单向外键关联t_personid name idCard(unique)1 张三 1002 李四 101t_idCardid cardNo100 111111111111111101 22222222222222Person.java类关系:public class Person private int id;private String name;private IdCard idCard;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public IdCard getIdCard() return idCard;public void setIdCard(IdCard idCard) this.idCard = idCard;public class IdCard private int id;private String cardNo;public int getId() return id;public void setId(int id) this.id = id;public String getCardNo() return cardNo;public void setCardNo(String cardNo) this.cardNo = cardNo;Person.hbm.xmlIdCard.hbm.xml4、 一对一双向外键关联(用的不少)t_personid name idCard(unique)1 张三 1002 李四 101t_idCardid cardNo100 111111111111111101 22222222222222public class Person private int id;private String name;private IdCard idCard;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public IdCard getIdCard() return idCard;public void setIdCard(IdCard idCard) this.idCard = idCard;public class IdCard private int id;private String cardNo;private Person person;public int getId() return id;public void setId(int id) this.id = id;public String getCardNo() return cardNo;public void setCardNo(String cardNo) this.cardNo = cardNo;public Person getPerson() return person;public void setPerson(Person person) this.person = person;5. 一对多单向关联映射t_studentid name classesid1 张三 12 李四 1t_classesid name1 动力节点import java.util.Set;public class Classes private int id;private String name;private Set students;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public Set getStudents() return students;public void setStudents(Set students) this.students = students;public class Student private int id;private String name;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;!- - 6. 一对多双向关联映射(最多)t_studentid name classesid1 张三 12 李四 1t_classesid name1 动力节点import java.util.Set;public class Classes private int id;private String name;private Set students;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public Set getStudents() return students;public void setStudents(Set students) this.students = students;public class Student private int id;private String name;private Classes classes;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public Classes getClasses() return classes;public void setClasses(Classes classes) this.classes = classes;!- - column=classesid 必须与key保持一致一下是几种用cascade和inverse联合使用插入数据的例子:方法一:(最佳方式)Class.hbm.xml文件:!- - 将维护权交给student,Student.hbm.xml:设置级联当保存student对象时,保存处在transient状态的class对象最佳插入数据方式:session = HibernateUtils.getSession();session.beginTransaction();Classes classes = new Classes();classes.setName(动力节点);Student student1 = new Student();student1.setName(张三);student1.setClasses(classes);session.save(student1);Student student2 = new Student();student2.setName(李四);student2.setClasses(classes);session.save(student2);session.getTransaction().commit();方法二:Class.hbm.xml: 维护权在class一端,加之又有cascade级联所以插入数据时如下:session = HibernateUtils.getSession();session.beginTransaction();Student student1 = new Student();student1.setName(张三);Student student2 = new Student();student2.setName(李四);Classes classes = new Classes();classes.setName(动力节点);Set students = new HashSet();students.add(student1);students.add(student2);classes.setStudents(students);session.save(classes);session.getTransaction().commit();执行语句:Hibernate: insert into Classes (name) values (?)Hibernate: insert into t_student (name, classesid) values (?, ?)Hibernate: insert into t_student (name, classesid) values (?, ?)Hibernate: update t_student set classesid=? where id=?Hibernate: update t_student set classesid=? where id=?多了两条更新语句7、 多对多双向关联映射(也很多)t_user_roleuser_id role_id1 11 22 12 22 33 33 4t_roleid name1 数据录入人员2 商务主管3 商务经理4 项目会计t_userid name1 张三2 李四3 王五public class User private int id;private String name;private Set roles;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public Set getRoles() return roles;public void setRoles(Set roles) this.roles = roles;public class Role private int id;private String name;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;8、 联合主键映射:import java.io.Serializable;public class FiscalYearPeriodPK implements Serializable /核算年private int fiscalYear;/核算月private int fiscalPeriod;public int getFiscalYear() return fiscalYear;public void setFiscalYear(int fiscalYear) this.fiscalYear = fiscalYear;public int getFiscalPeriod() return fiscalPeriod;public void setFiscalPeriod(int fiscalPeriod) this.fiscalPeriod = fiscalPeriod;Overridepublic int hashCode() final int prime = 31;int result = 1;result = prime * result + fiscalPeriod;result = prime * result + fiscalYear;return result;Overridepublic boolean equals(Object obj) if (this = obj)return true;if (obj = null)return false;if (getClass() != obj.getClass()return false;final FiscalYearPeriodPK other = (FiscalYearPeriodPK) obj;if (fiscalPeriod != other.fiscalPeriod)return false;if (fiscalYear != other.fiscalYear)return false;return true;public class FiscalYearPeriod private FiscalYearPeriodPK fiscalYearPeriodPK;/开始日期private Date beginDate;/结束日期private Date endDate;/状态private String periodSts;public Date getBeginDate() return beginDate;public void setBeginDate(Date beginDate) this.beginDate = beginDate;public Date getEndDate() return endDate;public void setEndDate(Date endDate) this.endDate = endDate;public String getPeriodSts() return periodSts;public void setPeriodSts(String periodSts) this.periodSts = periodSts;public FiscalYearPeriodPK getFiscalYearPeriodPK() return fiscalYearPeriodPK;public void setFiscalYearPeriodPK(FiscalYearPeriodPK fiscalYearPeriodPK) this.fiscalYearPeriodPK = fiscalYearPeriodPK;public void testSave1() Session session = null;try session = HibernateUtils.getSession();session.beginTransaction();FiscalYearPeriod fiscalYearPeriod = new FiscalYearPeriod();/构造复合主键对象FiscalYearPeriodPK fiscalYearPeriodPK = new FiscalYearPeriodPK();fiscalYearPeriodPK.setFiscalYear(2009);fiscalYearPeriodPK.setFiscalPeriod(12);fiscalYearPeriod.setFiscalYearPeriodPK(fiscalYearPeriodPK);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论