1,一对一映射
在Hibernate中,持久化对象间的一对一关联是通过one-to-one的元素定义的。示例如下
<one-to-one
name="propertyName"
class="ClassName"
cascade="all|none|save-update|delete"
constrained=“true|false"
outer-join="true|false|auto"
property-ref="preopertyNameFromAssociatedClass"
access="field|property|ClassName"
/>
在这段代码中,name是指属性的名字;class是指被关联的类的名字;cascade是可选项,表明操作是否从父对象级联到被关联的对象;constrained表明映射类映射的表对应的数据库表和被关联的对象的数据库表之间,是否通过一个外健的引用对主键进行约束;outer-join也是可选项,它指的是当设置hibernate.use_outer_join的时候,对这个关联允许外联被抓取;property-ref指定关联类的一个属性,这个属性将会和本外键相对应,如果没有指定,会使用对方关联类的主键;access是Hibernate用来访问属性的策略。
一对一关联有两种不同的形式,即主键关联和惟一外键关联。
一,主键关联
主键关联不需要额外的表字段。将Student和Person表的主键进行一对一的关联。示例如下:
<one-to-one name="person" class="Person"/>
<one-to-one name="student" class="Student" constraine="true"/>
Person和Student两个表中相关字段是对等的。Person表的主键将采用foreign的方式生成。
<class name="Person" table=" Person ">
<id name="id" column=" Person_ID">
<generator class="foreign">
<param name="propert">employee</param>
</generator>
</id>
...
<one-to-one name="Student"
class="Student"
constrained="true"/>
</class>
二,惟一外间关联
这种关联方式是指一个外键与一个惟一的关键字相关联,如果使用这种关联方式,上面的Student和Person的例子应该这样表达。
<many-to-one name=" Person " class="Person" column=" Person_ID" unique="true"/>
2,多对一映射
持久化对象间的多对一是通过many-to-one元素定义的。例如
<many-to-one
name="propertyName”
column="column_name"
class="ClassName"
cascade="all|none|save-update|delete"
outer-join="true|false|auto"
update="true|false"
insert="true|false"
property-ref="preopertyNameFromAssociatedClass"
access="field|property|ClassName"
/>
在这段代码中,name指类的属性名;column指表的字段名;class是可选项,指关联的类的名字;cascade指明那些操作会从父对象级联到关联的对象;outer-join指的是当设置hibernate.use_outer_join的时候,对这个给关联允许外连接抓取;update用于指定对应的字段是否用于UPDATE;property-ref指定关联类的一个属性,这个属性将会和本外键相对应;access为可选项,指访问属性的策略。