Hibernate对象关系映射总结
Hibernate对象关系映射总结
一对一双向关联(外键关联)
Hibernate对象关系映射总结
@Entity@Table(name="t_jpa_IdCard")告诉 hibernate:关系在对方设置:关系映射在我关联的类 public class IdCard{ Husband的 wife属性上已经作了:这里不再映射了。@Id因为:对象关系只需要在一方设置就可以了(对应数据库就是@GeneratedValue主外键关系,否则主从表都有对方的主键作外键) private int id; private Date usefulLife;@OneToOne(optional= false, cascade= CascadeType.REFRESH, mappedBy="idCard") private Person person;}
一对多双向关联双向一对多或多对一:不需要多一张表,只是使用 mappedBy:使用在 One一方。表示对方是主导,关系在对方设置
部门
人员
部门通过员工表的外键 depart_id能够找到自己的所有的员工
员工通过外键: depart_id能够找到自己所属的部门
public class Department{ private int id; private String name; private Set<Employee> emps;…………………………………..}
public class Employee{ private int id; private String name; private Department depart;/*对象导航*/………………………………….}
Hibernate对象关系映射总结
@Entity@Table(name="t_jpa_group3") public class Group3{ private int id; private String name; private Set<User3> users= new HashSet<User3>()@OneToMany(mappedBy="group") public Set<User3> getUsers(){ return users;}………………………………….}
@Entity@Table(name="t_jpa_user3") public class User3{ private int id; private String name; private Group3 group;@ManyToOne public Group3 getGroup(){ return group;}………………………………….}
mappedby说明对象关系在另一方设置:也就是在用户这一方设定:用户来维护对象的关系具体体现:用户组的主键在用户表中做外键。《==》 (主表主键在从表中做外键)存用户的时候:外键就是根据该对象的 id来定的。默认的外键子段就是:group_id@Entity@Table(name="t_jpa_user3") public class User3{ private int id; private String name; private Group3 group;@ManyToOne@JoinColumn(name="group_id8888") public Group3 getGroup(){ return group;} public void setGroup(Group3 group){ this.group= group;}@Id@GeneratedValue public int getId(){ return id;}
也可以更加明确的写出外键子段的名称:它所参照的主表列就是: Group3对应表的主键字段
这是用户表 user3
的结构
Hibernate对象关系映射总结
多对多双向关联
public class Student { private int id; private String name; private Set<Teacher> teachers; …………………………………. }
public class Teacher { private int id; private String name; private Set<Student> students; …………………………………. }
Hibernate对象关系映射总结
@Entity@Table(name="t_jpa_Student1") public class Student1{ private int id; private String name; private Set<Teacher1> teachers= new HashSet<Teacher1>();@ManyToMany(mappedBy="students") public Set<Teacher1> getTeachers(){ return teachers;} public void setTeachers(Set<Teacher1> teachers){ this.teachers= teachers;}………………………………….}
@Entity@Table(name="t_jpa_teacher1") public class Teacher1{ private int id; private String name; private Set<Student1> students= new HashSet<Student1>();@ManyToMany@JoinTable(name="t_jpa_teacher_student", joinColumns={@JoinColumn(name="teacher_id")}, inverseJoinColumns={@JoinColumn(name="student_id" )} ) public Set<Student1> getStudents(){ return students;} public void setStudents(Set<Student1> students){ this.students= students;}………………………………….}
一对多单向关联:用户组用户
用户组知道自己有哪些用户:通过 groupid就能查询到用户
用户不知道自己所于哪个用户组
Hibernate对象关系映射总结
public class Group{ private int id; private String name; private Set<User> users= new HashSet<User>();}@Entity@Table(name="t_jpa_group4") public class Group4{ private int id; private String name; private Set<User4> users= new HashSet<User4>();@OneToMany@JoinColumn(name="groupId") public Set<User4> getUsers(){ return users;}………………………………..}对应 t_jpa_user4如下:
public class User{ private int id; private String name;}
@Entity@Table(name="t_jpa_user4") public class User4{ private int id; private String name;……………………………………………..}一对多的@JoinColumn注解在“被控方”,即one的一方本表主键在对方表中做外键:外键的名称:groupid
订单
多对一单向关联
客户
多个订单对应一个客户:订单通过外键: customer_id能够找到自己的客户
Hibernate对象关系映射总结
客户不知道自己有什么订单因为是单向关联
public class Order implements Serializable{ private long id; private String orderNumber; private Customer customer; public Order(){}}………………………………….}@Entity@Table(name="t_jpa_user1") public class User1{ private int id; private String name; private Group1 group;@ManyToOne public Group1 getGroup(){ return group;}}@Entity@Table(name="t_jpa_user1") public class User1{ private int id; private String name; private Group1 group;@ManyToOne@JoinColumn(name="group_id88888") public Group1 getGroup(){ return group;} public void setGroup(Group1 group){ this.group= group;}@Id@GeneratedValue
public class Customer implements Serializable{ private long id; private String name; pri
vate String address; public Customer(){};}………………………………….}@Entity@Table(name="t_jpa_group1") public class Group1{ private int id; private String name;}
下面的注解方式更加明确这里是单向关联:从多方指向一方:也就是对应数据库的从表去访问主表。此时从表必须有主表的外键关联才能找到主表记录。所有从表要加入外键关联:并且这里还特别定义了外键名称。 group_id88888这里的@JoinColumn注解是可选的,如果没有这个注解,关联字段默认值为:关联属性名+下划线+被关联端的主键列名(group_id)
一对一和多对一的@JoinColumn注解的都是在主控方(多的一方),都是对方表的主键在这里做外键
< …… 此处隐藏:3856字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




