教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

Hibernate对象关系映射总结

来源:网络收集 时间:2026-09-13
导读: Hibernate对象关系映射总结 一对一双向关联(外键关联) Hibernate对象关系映射总结 @Entity@Table(name=t_jpa_IdCard)告诉 hibernate:关系在对方设置:关系映射在我关联的类 public class IdCard{ Husband的 wife属性上已经作了:这里不再映射了。@Id因为:

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
Hibernate对象关系映射总结.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/122030.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)