hibernate多种映射关系
?
1.hibernate多对一映射
???关联映射的本质:将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用
?
两种策略可以实现一对一的关联映射
?? *主键关联:既让两个对象具有相同的主键值,以表明他们之间一一对应的关系:数据库表不会有额外的字段来维护他们之间的关系,仅通过表的主键来关联
?? *唯一外键关联:外键关联,本来是用于多对一的配置,但是如果加上唯一的限制后,也可以用来表示一对一关联关系
?
?
<many-to-one>会在多的一端加入一个外键,这个外键是由<many-to-one>中的column属性定义的,如果忽略了这个属性,那么默外键跟实体的属性一致
?
<many-to-one>标签的定义示例:
?????? *<many-to-one name="group" column="groupid">
注意model中是不用groupid而是用实体对象如下:
? private Group group;——getter和setter方法
?
理解级联的含义:
????? *级联是对象的链锁操作(指save,或update,对于delete无效)
????? *级联对load不影响,也就是说级联对加载并不影响,只要配置了many-to-one就会加载相关
?
?
?
2.hibernate一对一主键关联映射(单向关联Person——》IdCard)
一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段
?
具体映射:
??? <id name="id">
????????? <!--person的主键来源,也就是共享idCar的主键-->
????????? <generator constrained="true"/>
?
注意两个model中都要有对象的引用
?
?
3.hibernate一对一主键关联映射(双向关联Person《——》IdCard)
在单向一对一主键关联的基础上还要在idCard的映射文件中加入<one-to-one>标签指向person,指示hibernate如何加载person,默认根据主键加载:
?
<one-to-one name="person">
?
?
4.hibernate一对一唯一外键关联映射(单向关联Person——》IdCard)
一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段
?
具体映射:
??? <id name="id">
????????? <generator unique="true"/><!--unique表示唯一性-->
?
注意两个model中都要有对象的引用
?
?
5.hibernate一对一唯一外键关联映射(双向关联person《———》IdCard)
在一对一唯一外键关联的基础上,在IdCard的映射文件中加入<one-to-one>指向person
如:
<one-to-one name="person" property-ref="idCard"/>
?
?
?