电子厂Hibernate学习日志(4):关系映射

1.单往多针对性几近

 Rose是基本上针对多控制方:

 

 

 

Group是为控制方:不欲配备Set集合映射

 

 

2.双朝向多针对性几近

Group:

 

 

 

Role:

 

 

①两单布局文件还如配备many-to-many元素。

②日增
inverse属性,inverse属性负责控制关系,默认为false,也尽管是涉及之双边都能控制,但如此见面促成一部分题材,更新时会因为两岸都控制关系,于是再次更新。一般的话有一样端要设为true。

③有平等端设置为inverse=true,即征外一样端也控制端。 

 

3.单通往多对平

电子厂 1

 人-地址是首屈一指的只为平等针对性大多之映照关系,特点是炫耀为单,“多”的同样正在为主动方。一般还是“多”的同一正设置一个外键来贯彻关系。

Person:

 

 

Address:

 

 

(1)由于是差不多对平关联,控制方Person需要增加Address属性,用来代表对应一个Address。

(2)多对同样运many-to-one元素。

(3)cascade属性表示当控制方(Person)在进行添加、修改、删除时,是否涉嫌被控制方(Address)。这里是save-update,即当增长、修改时提到。

(4)outer-join设置也true,即于询问关联对象时,一个SQL语句就足以查出;如果安也false,则使多单SQL语句查出数据。

4.单朝同一对准几近

电子厂 2

 Company:

 

 

Employee:

 

 

 

(1)公司是因为包含多单雇员,所以需要建立Set集合类型变量employees,用来对号入座“多”的如出一辙正在。

(2)one-to-many属性需要指定class属性值,对承诺“多”的相同在。

(3)“多”的同样着无欲配备关系。

 

5.双向一对多(多针对相同)(常用)

电子厂 3

 双向的一致对几近(多针对性同一)映射关系是老大大的照射,是鹤立鸡群的”父子”关系,在数据库中屡使用,必须控制使用。

Father:

 

 

Son:

 

 

(1)father类中须出集聚合类变量,对许“多”的均等方。

(2)Son类中定义father类型变量,对承诺“一”的同正在。

(3)需要以照文件中分别安排many-to-one和one-to-many元素。

(4)维护关系之等同正值一般由“多”的同等正在来当,这样效率比较高。本实例中,father的照射文件被inverse=”true”,即将维护关系交给了son。

 

6.基于外键的一味为一对一

电子厂 4

 

User:

 

 

(1)由于是单为照,User中需要树立一个email类型变量则email中未欲。

(2)使用many-to-one配置一针对一映射,需要定义unique=”true”,即非能够出还的主键,就限制了“多”的等同正要成为“一”,这样实现了平对准一映射。

(3)单为的平对一映射,只待安排一正值即可。

 

7.基被外键的双向一对一(常用)

User:

 

 

Email:

 

 

(1)双方还要出对方类型的变量属性。

(2)E-mail配置文件使用了one-to-one配置一对准一映射。

(3)one-to-one配置有如下属性。

●name:属性之名。

●class(可选,默认是由此反射得到的属性类型):被波及的类的名。

●cascade(级联,可摘):表明操作是否由父对象级联到被提到的目标。

●constrained(约束,可摘):表明该类对应之阐发对应的数目库表,和让波及的目标所对应之数码库表之间,通过一个外键引用对主键进行约束。这个选项影响save()和delete()在级联执行时的先后顺序(也以schema
export tool中受采取)。

●outer-join(外接连,可选取,默认为活动):当装hibernate.use_outer_join时,对是关系允许他接连抓取。

●property-ref(可选):指定关联类的一个特性,这个特性将会晤与本外键相对应。如果无点名,会下对方关联类的主键。

●access(可选,默认是property):Hibernate用来聘属性之方针。

(4)本实例property-ref=”email”,即关联到User类中之email变量。

 

8.基于主键的唯有为一对一

电子厂 5

据悉主键的如出一辙对一映射,即有限个说明底主键值相同。单为一对一底景不多,例如用户和电子邮件里的涉,假定没有用户须来唯一的电子邮件及之对应,而电子邮件可以没有相应的用户,即对诺提到是独自为的。

Emailpk:

 

 

Userpk:

 

 

(1)使用one-to-one配置基于主键的同等针对一映射。

(2)generator class=”foreign”意味着Emailpk使用外部主键,<param
name=”property”>userpk</param>配置了Emailpk使用Userpk的主键作为协调之主键,这样即便兑现了因主键的相同对一映射。

(3)constrained=”true”说明userpk的主键值在一个约束,即emailpk使用了userpk的主键。

 

9.基于主键电子厂的双向一对一

Emailpk:

 

 

Userpk:

 

 

(1)双方还施用了one-to-one配置双向的一致对准一映射。

(2)注意inverse与cascade的关联,这简单单特性本身互免影响,但从底作用小接近,都能够掀起针对涉嫌表的换代。

●inverse只针对set+one-to-many(或many-to-many)有效,对many-to-one、one-to-one无效。cascade对关联标记都灵验。

●inverse对聚集对象整体打作用,cascade对聚集对象中之一个一个要素于作用,如果凑为空,那么cascade不会见引发关联操作。

style=”line-height: 1.6″> ●起作用的会不比:cascade在针对主控方操作时,级联发生。inverse在flush时(commit会自动执行flush),对session中之拥有set、Hibernate判断每个set是否来转变,对发生转变的set执行相应的sql,执行前,会有只判断:if(inverse==true)return;可以看来cascade在先,inverse在后。

 

 

 

 

 

 

 

 

 

 

 

 

 

<wiz_tmp_tag id=”wiz-table-range-border” contenteditable=”false”
style=”display: none;”>

 

 

 

 

 

相关文章