Hibernate学习日志

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;”>

 

 

 

 

 

相关文章