Hibernate关联关系.docx

上传人:b****8 文档编号:11175977 上传时间:2023-02-25 格式:DOCX 页数:23 大小:19.14KB
下载 相关 举报
Hibernate关联关系.docx_第1页
第1页 / 共23页
Hibernate关联关系.docx_第2页
第2页 / 共23页
Hibernate关联关系.docx_第3页
第3页 / 共23页
Hibernate关联关系.docx_第4页
第4页 / 共23页
Hibernate关联关系.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Hibernate关联关系.docx

《Hibernate关联关系.docx》由会员分享,可在线阅读,更多相关《Hibernate关联关系.docx(23页珍藏版)》请在冰豆网上搜索。

Hibernate关联关系.docx

Hibernate关联关系

Hibernate关联关系

目录

1、one-to-one单向外键关联2

1.1、xml映射方式2

1.2、Annotations映射2

2、one-to-one双向外键关联2

2.1、xml映射方式3

2.2、Annotations映射3

3、one-to-one单向主键关联(不重要)3

3.1、xml映射4

3.2、Annotations映射4

4、one-to-one双向主键关联(不重要)4

4.1、xml映射4

4.2、Annotations映射5

5、联合外键5

6、many-to-one单项关联6

6.1、xml映射6

6.2、Annotations映射6

7、one-to-many单向关联7

7.1、xml映射7

7.2、Annotations映射7

8、one-to-many/many-to-one双向关联8

8.1、xml映射8

8.2、Annotations映射8

9、many-to-many单向关联9

9.1、xml映射9

9.2、Annotations映射9

10、many-to-many双向关联10

10.1、xml映射10

10.2、Annotations映射11

11、继承11

11.1、每个类分层结构一张表(tableperclasshierarchy)[单表]11

表1Annotations11

表2xml12

11.2、每个子类一张表(tablepersubclass)12

表1Annotations13

表2xml14

11.3、每个具体类一张表(tableperconcreteclass)14

表1Annotations14

表2xml15

 

1、one-to-one单向外键关联

1.1、xml映射方式

Class

Xml

publicclassStudent{

privateintid;

privateStringname;

privateintage;

privateStringsex;

……get/set

}

publicclassStuIdCard{

privateintid;

privateStringnum;

privateStudentstudent;

……get/set

}

name="student"column="studentId"unique="true">

注意:

unique保证唯一性

1.2、Annotations映射

Classone

Classtwo

@Entity

publicclassWife{

privateintid;

privateStringname;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

publicclassHusband{

privateintid;

privateStringname;

privateWifewife;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToOne

@JoinColumn(name="wifeId")

publicWifegetWife(){

returnwife;

}

……get/set

}

Wife-------husband@JoinColumn(name="wifeId"):

列别名

2、one-to-one双向外键关联

2.1、xml映射方式

Calss

Xml

publicclassStudent{

privateintid;

privateStringname;

privateintage;

privateStringsex;

privateStuIdCardstuIdCard;

……get/set

}

name="stuIdCard"

property-ref="student">

publicclassStuIdCard{

privateintid;

privateStringnum;

privateStudentstudent;

……get/set

}

name="student"column="studentId"unique="true">

2.2、Annotations映射

Classone

Classtwo

@Entity

publicclassWife{

privateintid;

privateStringname;

privateHusbandhusband;

@OneToOne(mappedBy="wife")

publicHusbandgetHusband(){

returnhusband;

}

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

@Entity

publicclassHusband{

privateintid;

privateStringname;

privateWifewife;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToOne

@JoinColumn(name="wifeId")

publicWifegetWife(){

returnwife;

}

……get/set

}

3、one-to-one单向主键关联(不重要)

3.1、xml映射

Class

Xml

publicclassStudent{

privateintid;

privateStringname;

privateintage;

privateStringsex;

……get/set

}

publicclassStuIdCard{

privateintid;

privateStringnum;

privateStudentstudent;

……get/set

}

student

3.2、Annotations映射

Classone

Classtwo

@Entity

publicclassWife{

privateintid;

privateStringname;

privateHusbandhusband;

@OneToOne(mappedBy="wife")

publicHusbandgetHusband(){

returnhusband;

}

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

@Entity

publicclassHusband{

privateintid;

privateStringname;

privateWifewife;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToOne

@PrimaryKeyJoinColumn

publicWifegetWife(){

returnwife;

}

……get/set

}

4、one-to-one双向主键关联(不重要)

4.1、xml映射

Class

Xml

publicclassStudent{

privateintid;

privateStringname;

privateintage;

privateStringsex;

privateStuIdCardstuIdCard;

……get/set

}

publicclassStuIdCard{

privateintid;

privateStringnum;

privateStudentstudent;

……get/set

}

student

4.2、Annotations映射

Classone

Classtwo

@Entity

publicclassWife{

privateintid;

privateStringname;

privateHusbandhusband;

@OneToOne

@PrimaryKeyJoinColumn

publicHusbandgetHusband(){

returnhusband;

}

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

@Entity

publicclassHusband{

privateintid;

privateStringname;

privateWifewife;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToOne

@PrimaryKeyJoinColumn

publicWifegetWife(){

returnwife;

}

……get/set

}

5、联合外键

Classone

Classtwo

@Entity

@IdClass(WifePK.class)

publicclassWife{

privateintid;

privateStringname;

privateintage;

@Id

publicintgetId(){

returnid;

}

@Id

publicStringgetName(){

returnname;

}

……get/set

}

@Entity

publicclassHusband{

privateintid;

privateStringname;

privateWifewife;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToOne

@JoinColumns({

@JoinColumn(name="wifeId",referencedColumnName="id"),

@JoinColumn(name="wifeName",referencedColumnName="name")

})

publicWifegetWife(){

returnwife;

}

……get/set

}

需要第三个联合主键类WifePK,包括属性有id、name,实现Serializable,有get、set方法。

Wife的id和name联合做主键。

Husband类中的红色字体代码部分可以不用书写,默认生成,其作用为修改两个主键的name为wifeId和wifeName。

6、many-to-one单项关联

6.1、xml映射

Class

Xml

publicclassGroup{

privateintid;

privateStringname;

……get/set

}

publicclassUser{

privateintid;

privateStringname;

privateGroupgroup;

……get/set

}

一个组有多个用户,一个用户只能有一个组;多记少。

6.2、Annotations映射

Classone

Classtwo

@Entity

@Table(name="t_group")

publicclassGroup{

privateintid;

privateStringname;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

@Entity

@Table(name="t_user")

publicclassUser{

privateintid;

privateStringname;

privateGroupgroup;

@ManyToOne

publicGroupgetGroup(){

returngroup;

}

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

7、one-to-many单向关联

7.1、xml映射

Class

Xml

publicclassGroup{

privateintid;

privateStringname;

privateSetusers=newHashSet();

……get/set

}

publicclassUser{

privateintid;

privateStringname;

……get/set

}

一个组有多个用户,一个用户只能有一个组;多记少。

7.2、Annotations映射

Classone

Classtwo

@Entity

@Table(name="t_group")

publicclassGroup{

privateintid;

privateStringname;

privateSetusers=newHashSet();

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToMany

@JoinColumn(name="groupId")

publicSetgetUsers(){

returnusers;

}

……get/set

}

@Entity

@Table(name="t_user")

publicclassUser{

privateintid;

privateStringname;

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

8、one-to-many/many-to-one双向关联

8.1、xml映射

Class

Xml

publicclassGroup{

privateintid;

privateStringname;

privateSetusers=newHashSet();

……get/set

}

publicclassUser{

privateintid;

privateStringname;

privateGroupgroup;

……get/set

}

8.2、Annotations映射

Classone

Classtwo

@Entity

@Table(name="group")

publicclassGroup{

privateintid;

privateStringname;

privateSetusers=newHashSet();

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

@OneToMany(mappedBy="group")

publicSetgetUsers(){

returnusers;

}

……get/set

}

@Entity

@Table(name="t_user")

publicclassUser{

privateintid;

privateStringname;

privateGroupgroup;

@ManyToOne

publicGroupgetGroup(){

returngroup;

}

@Id

@GeneratedValue

publicintgetId(){

returnid;

}

……get/set

}

9、many-to-many单向关联

9.1、xml映射

Class

Xml

publicclassStudent{

privateintid;

privateStringname;

publicclassTeacher{

privateintid;

privateStringname;

privateSetstudents=new

HashSet();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1