Hibernate的数据映射

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为可选项,指访问属性的策略。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值