技术开发 频道

关于Hibernate的关联关系及其操作


【IT168 技术文档】
   下面是以外键关联的Customer和Certificate的映射文件:
    ● Customer.hbm.xml是同以主键关联中的Customer映射文件一样。
    ● Certificate.hbm.xml:
<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>
    以外键关联的一对一,其实本质上变成了一对多的双向关联,编写时直接按照一对多和多对一的要求编写,最后在many-to-one这一边加上一个uique="true",说明它是一对多的特例。
    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
相关文章