1、Hibernate关联关系Hibernate关联关系目录1、one-to-one 单向外键关联 21.1、xml映射方式 21.2、Annotations映射 22、one-to-one双向外键关联 22.1、xml映射方式 32.2、Annotations映射 33、one-to-one单向主键关联(不重要) 33.1、xml映射 43.2、Annotations映射 44、one-to-one双向主键关联(不重要) 44.1、xml映射 44.2、Annotations映射 55、联合外键 56、many-to-one 单项关联 66.1、xml映射 66.2、Annotations映射
2、67、one-to-many 单向关联 77.1、xml映射 77.2、Annotations映射 78、one-to-many/many-to-one 双向关联 88.1、xml映射 88.2、Annotations映射 89、many-to-many 单向关联 99.1、xml 映射 99.2、Annotations 映射 910、many-to-many 双向关联 1010.1、xml 映射 1010.2、Annotations 映射 1111、继承 1111.1、每个类分层结构一张表(table per class hierarchy) 单表 11表1 Annotations 11表2
3、 xml 1211.2、每个子类一张表(table per subclass) 12表1 Annotations 13表2 xml 1411.3、每个具体类一张表(table per concrete class) 14表1 Annotations 14表2 xml 151、one-to-one 单向外键关联1.1、xml映射方式ClassXmlpublic class Student private int id; private String name; private int age; private String sex;get/setpublic class StuIdCard pr
4、ivate int id; private String num; private Student student;get/set注意:unique保证唯一性1.2、Annotations映射Class oneClass twoEntitypublic class Wife private int id; private String name;IdGeneratedValuepublic int getId() return id; get/setpublic class Husband private int id;private String name; private Wife wif
5、e;IdGeneratedValuepublic int getId() return id; OneToOneJoinColumn(name=wifeId)public Wife getWife() return wife; get/setWife-husbandJoinColumn(name=wifeId):列别名2、one-to-one双向外键关联2.1、xml映射方式CalssXmlpublic class Student private int id; private String name; private int age; private String sex;private S
6、tuIdCard stuIdCard;get/set public class StuIdCard private int id; private String num; private Student student;get/set2.2、Annotations映射Class oneClasstwoEntitypublic class Wife private int id;private String name;private Husband husband;OneToOne(mappedBy=wife)public Husband getHusband() return husband;
7、 IdGeneratedValuepublic int getId() return id; get/setEntitypublic class Husband private int id;private String name;private Wife wife;IdGeneratedValuepublic int getId() return id; OneToOneJoinColumn(name=wifeId)public Wife getWife() return wife;get/set3、one-to-one单向主键关联(不重要)3.1、xml映射ClassXmlpublic c
8、lass Student private int id; private String name; private int age; private String sex;get/setpublic class StuIdCard private int id; private String num; private Student student;get/setstudent 3.2、Annotations映射Class oneClasstwoEntitypublic class Wife private int id;private String name;private Husband
9、husband;OneToOne(mappedBy=wife)public Husband getHusband() return husband; IdGeneratedValuepublic int getId() return id; get/setEntitypublic class Husband private int id;private String name;private Wife wife;IdGeneratedValuepublic int getId() return id; OneToOne PrimaryKeyJoinColumnpublic Wife getWi
10、fe() return wife;get/set4、one-to-one双向主键关联(不重要)4.1、xml映射ClassXmlpublic class Student private int id; private String name; private int age; private String sex;private StuIdCard stuIdCard;get/set public class StuIdCard private int id; private String num; private Student student;get/set student 4.2、Ann
11、otations映射Class oneClasstwoEntitypublic class Wife private int id; private String name; private Husband husband; OneToOne PrimaryKeyJoinColumn public Husband getHusband() return husband; Id GeneratedValue public int getId() return id; get/setEntitypublic class Husband private int id; private String
12、name; private Wife wife; Id GeneratedValue public int getId() return id; OneToOne PrimaryKeyJoinColumn public Wife getWife() return wife; get/set5、联合外键Class oneClass twoEntityIdClass(WifePK.class)public class Wife private int id; private String name; private int age; Id public int getId() return id;
13、 Id public String getName() return name; get/setEntitypublic class Husband private int id; private String name; private Wife wife; Id GeneratedValue public int getId() return id; OneToOne JoinColumns( JoinColumn(name=wifeId, referencedColumnName=id),JoinColumn(name=wifeName, referencedColumnName=nam
14、e)public Wife getWife() return wife; get/set需要第三个联合主键类WifePK,包括属性有id、name,实现Serializable,有get、set方法。Wife的id和name联合做主键。Husband类中的红色字体代码部分可以不用书写,默认生成,其作用为修改两个主键的name为wifeId和wifeName。6、many-to-one 单项关联6.1、xml映射ClassXmlpublic class Group private int id; private String name;get/set public class User priv
15、ate int id; private String name; private Group group;get/set 一个组有多个用户,一个用户只能有一个组;多记少。6.2、Annotations映射Class oneClass twoEntityTable(name=t_group)public class Group private int id; private String name; Id GeneratedValue public int getId() return id; get/setEntityTable(name=t_user)public class User pr
16、ivate int id; private String name; private Group group; ManyToOne public Group getGroup() return group; Id GeneratedValue public int getId() return id; get/set7、one-to-many单向关联7.1、xml映射ClassXmlpublic class Group private int id; private String name; private Set users = new HashSet();get/setpublic cla
17、ss User private int id; private String name;get/set 一个组有多个用户,一个用户只能有一个组;多记少。7.2、Annotations映射Class oneClass twoEntityTable(name=t_group)public class Group private int id; private String name; private Set users = new HashSet(); Id GeneratedValue public int getId() return id; OneToMany JoinColumn(name
18、=groupId) public Set getUsers() return users; get/setEntityTable(name=t_user)public class User private int id; private String name; Id GeneratedValue public int getId() return id; get/set8、one-to-many/many-to-one双向关联8.1、xml映射ClassXmlpublic class Group private int id; private String name; private Set
19、 users = new HashSet(); get/setpublic class User private int id; private String name; private Group group;get/set8.2、Annotations映射Class oneClass twoEntityTable(name=group)public class Group private int id; private String name; private Set users = new HashSet(); Id GeneratedValue public int getId() r
20、eturn id; OneToMany(mappedBy=group) public Set getUsers() return users; get/setEntityTable(name=t_user)public class User private int id; private String name; private Group group; ManyToOne public Group getGroup() return group; Id GeneratedValue public int getId() return id; get/set9、many-to-many 单向关联9.1、xml 映射ClassXmlpublic class Student private int id; private String name; public class Teacher private int id;private String name;private Set students =newHashSet();many-to
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1