hibernate多对一及一对一关联映射学习笔记

首先感谢尚学堂的王勇老师!!!

多对一

会在多的一端加入一个外键,指向一的一端,这个外键是由中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致。

标签的定义示例:
使用级联:
<many-to-one name="group" column="groupid" cascade="all"/>

默认不使用级联:
 <many-to-one name="group" column="groupid"/>


注:cascade=&quot;all|none|save-update|delete&quot;

这种方式下数据库中多的一端产生外键。如果persistent状态的对象引用transient状态的对象会抛出TransientObjectException异常。

一对一主键关联(单向)

让两个实体对象的id保持相同,这样可以避免多余的字段被创建

	<id name="id">
		<!-- person的主键来源idCard,也就是共享idCard的主键 -->
		<generator class="foreign">
			<param name="property">idCard</param>
		</generator>
	</id>
	<property name="name"/>
	<!-- one-to-one标签的含义,指示hibernate怎么加载它的关联对象,默认根据主键加载,
	constrained="true",	表明当前主键上存在一个约束,person的主键作为外键参照了idCard	
	 -->
	<one-to-one name="idCard" constrained="true"/>

一对一主键关联映射中,默认了cascade属性
主键充当外键

一对一主键关联(双向)

你可能感兴趣的:(Hibernate)