Hibernate (cascade)级联关系

利用关联关系操作对象: 
数据对象之间的关联关系有一对一,一对多及多对多三种。在 数据库 操作中,数据对象之间的关联关系使用JDBC处理很困难。例如,当删除一个班级的信息时,还要删除该班级的所有学生的基本信息。如果直接使用JDBC执行这种级联操作,会非常繁锁。 hibernate 通过把实体对象之间的关联关系及级联关系在映射文件中声明,比较简单地解决了这类级联操作问题。 
一对一关联关系的使用: 
一对一关联关系在实际生活中是比较觉的,例如学生与学生证的关系,通过学生证可以找到学生。一对一关联关系在Hibernate中的实现有两种方式,分别是主键关联和外键关联。 
主键关联: 
主键关联的重点是,关联两个实体共享一个主键值。例如student与card是一对一关系,它们在数据库中对应的表分别是t_student和 t_card。它们共用一个主键值ID,这个主键可由t_student或t_card表生成。问题是如何让另一张表引用已经生成的主键值呢?例如,t_student表未老先衰了ID的值,t_card表如何引用它?这需要在Hibernate的映射文件中使用主键的foreign生成机制! 

为了表示Student与Card之间的一对一的关联关系,我们需要在它们各自的映射文件 中都要使用<one-to-one>标记! 
一对一关系我在前面已经写过例子程序了,在这里仅给出两个映射文件。如下: 
<?xml version="1.0" encoding="GBK"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.NET/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="hibernate.PO.TStudent" table="t_student" lazy="true"><!--把类与表关联起来 --> 
        <id name="id" type="Java.lang.Integer"> 
            <column name="id"/> 
            <generator class="increment" /> 
        </id> 
        <property name="userName" type="java.lang.String"> 
            <column name="userName" length="20" /> 
        </property> 
        <property name="cardId" type="java.lang.String"> 
            <column name="card_id" length="20" /> 
        </property> 
        <property name="sex" type="java.lang.String"> 
            <column name="sex" length="2" /> 
        </property> 
        <property name="age" type="java.lang.Integer"> 
            <column name="age" /> 
        </property> 
        <one-to-one name="card" class="hibernate.PO.TCard" fetch="join" cascade="all" /> 
    </class> 
</hibernate-mapping> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值