关于Hibernate的关联关系及其操作
【IT168 技术文档】
下面是以外键关联的Customer和Certificate的映射文件:
● Customer.hbm.xml是同以主键关联中的Customer映射文件一样。
● Certificate.hbm.xml:
以外键关联的一对一,其实本质上变成了一对多的双向关联,编写时直接按照一对多和多对一的要求编写,最后在many-to-one这一边加上一个uique="true",说明它是一对多的特例。<hibernate-mapping>
<class name="hibernate.Certificate" table="certificate" schema="dbo" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="uuid.hex" />
<param name="property">Customer</param>
</generator>
</id>
<property name="information" type="java.lang.String">
<column name="information" length="50" not-null="true" />
</property>
<many-to-one name="Customer" class="hibernate.Customer"
<!--uique设为true,表示由多对一变成一对一-->
uique="true" column="customer_id"
</class>
</hibernate-mapping>
one-to-one 节点有以下属性:
cascade 操作级联(cascade)关系,可选值有all:所有情况下均进行级联操作;none:所有情况下均不进行级联操作;save-update:在执行save-update时进行级联操作。delete:在执行delete时进行级联操作。级联(cascade)在Hibernate映射关系中是个非常重要的概念。它指的是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作。如对主控对象调用save-update或delete方法时,是否同时对关联对象(被动方)进行save-update或delete。这里,当客户(Customer)被更新或者删除时,其所关联的订单(Order)同时被修改或者删除,因此,这里的级联关系设置为all。
constrained 约束表明主控表的主键上是否存在一个外键(foreign key)对其进行约束。这个选项关系到save、delete等方法的级联操作顺序。默认为关联类的主键属性名。
0
相关文章
