1.16 表之间的关系(单一主键的一对一关系)

一、表之间的关系有:

1.一对一:单向、双向;

2.一对多:单向、双向;

3.多对一:单向、双向;

4.多对多:单向、双向;

二、一对一单向关系举例(annotation 方式)。

例如:husband和wife两个表,都有id和name字段。

在数据库的设计上,应为:wife作为主表,husband作为子表,husband表中需要加入wife表的wifeid字段。

在类的设计上,除了均有id和name的get和set方法外,annotation标示不再累赘。在husband类中,加入wife变量

@entity

public class husband{

..

..

public wife mywife;


@oneToone

public wife getwift(){

}

}

三、一对一关联(xml方式)

例如学生(Student)和学生证(StudentCard)是一对一的关系。StudentCard类中id、num和student字段。

StudentCard类的xml文件配置如下:

<hibernate-mapping>
<class name="com.bjsxt.hibernate.StuIdCard">
<id name="id">
<generator class="native"></generator>
</id>

<property name="num"/>
<many-to-one name="student" column="studentId" unique="true"></many-to-one>
    </class>

</hibernate-mapping>

意思是StudentCard类中,有个字段student,对应数据库中studentid列,many-to-one的意思是多个学生证对应一个学生,但是后面加了unique=true,意思就是唯一的。

四、一对一关系(双向关联 annotation方式)

1.例如husband和wife是一对一双向关联,husband表中有wifeid,wife表中有husbandid

2.在husband类中

@entity

public class husband{

..

..

public wife mywife;


@oneToone

public wife getwift(){

}

}

3.在wife类中

@entity

public class wife{

..

..

public husband myhusband;


@oneToone(mappedby=“wife“)

public husband gethusband(){

}

}

mappedby=“wife“的意思是: 通过husband类中的wife字段,进行一对一双向对应。

五、一对一双向关联(xml方式)

例如学生(Student)和学生证(StudentCard)是一对一的双向关联关系。

1、StudentCard类中id、num和student字段。

StudentCard类的xml文件配置如下:

<hibernate-mapping>
<class name="com.bjsxt.hibernate.StuIdCard">
<id name="id">
<generator class="native"></generator>
</id>

<property name="num"/>
<many-to-one name="student" column="studentId" unique="true"></many-to-one>
    </class>

</hibernate-mapping>

2、在Student类中加入stuIdcard字段。在xml配置为:

<hibernate-mapping>
<class name="com.bjsxt.hibernate.Student" dynamic-update="true">
<id name="id">
<generator class="native"></generator>
</id>

<property name="name"></property>
<property name="age" />
<property name="sex" />
<property name="good" type="yes_no"></property>
<one-to-one name="stuIdCard" property-ref="student"></one-to-one>
    </class>

</hibernate-mapping>

意思是与stuldCard类中student字段一对一对应关系。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值