admin管理员组

文章数量:1565816

2024年5月17日发(作者:)

数据库的表关系图

1>:one-to-one(一对一关联)主键关联:

一对一关联一般可分为主键关联和外键关联

主键关联的意思是说关联的两个实体共享一个主键值,但这个主键可以由两个表产生.

现在的问题是:

*如何让另一个表引用已经生成的主键值

解决办法:

*Hibernate映射文件中使用主键的foreign生成机制

eg:学生表:

cascade="all">

name="card" class=""

添加:

class=""

fetch="join"

cascade="all" />

元素的lazy属性为true,表示延迟加载,如果lazy设为false,则表示立即加载.

以下对这二点进行说明.

立即加载:表示在从数据库中取得数据组装好一个对象后,会立即再从数据库取得数据

组装此对象所关联的对象

延迟加载:表示在从数据库中取得数据组装好一个对象后,不会立即从数据库中取得数

据组装此对象所关联的对象,

而是等到需要时,才会从数据库取得数据组装此关联对象.

元素的fetch属性可选为select和join

join:连接抓取,Hibernate通过在Select语句中使用outer join(外连接)来获得对象的

关联实例或者关联集合.

select:查询抓取,Hibernate需要另外发送一条select语句抓取当前对象的关联实体或

集合.

******所以我们一般用连接抓取

证件表:

catalog="study">

user

constrained="true">

一对一映射必须加载的元素有:

name

class

constrained(主键关联)

fetch(关联的一方才有:意思是说需要通过这一方查询另一方数据的一方.比如学

生表查询证件中的数据,学生就是关联的一方)

cascade(关联的一方才有:意思是说需要通过这一方保存或者更新数据对另一方

也产生影响(另一方也保存或者更新了,比如保存学生信息,那么与学生相关联的证件信息也

保存了))

2>外键关联:

开发中可以参照主键关联和

这里,学生表保存不变,只改变证件表:

unique="true"/>

3>:单身关联

一对多关联分为单向一对多关联和双向一双多关联

单向的一对多关联只需要在一方进行映射配置

单身一对多关联:

catalog="study">

name="ers" table="customers"

inverse="true">

name="orders" table="orders" cascade="save-update"

这里需要强调的是元素的属性代表的意义:

name

table

lazy:当为true时为延迟加载,为false时为立即加载

inverse:用于表示双向关联中的被动一端,inverse的值为false的一方负责维护关联关

cascade

sort:排序关系,unsorted(不排序),natural(自然排序),comparatorClass(由某个实现

了ator接口的类型 指定排序算法。);

******子元素的column属性指定关联表(orders表)的外键(customers_ID)

4>:双向关联:

如果要设置一对多双向关联关系.那么还需要在"多"的映射文件中使用

class="ers"

column="customers_ID"

cascade="none"

outer-join="auto"

insert="false" insert和update设定是否对column属性指定的关联字段进

行insert和update操作

update="false">

4>多对多关联:

多对多关联时要建一个连接表查询

学生的映射文件

cascade="save-update" inverse="false">

column="teaID">

class="rs"

***对元素的理解:

它的控制主要是通过stuID(外键)来完成,就是我们从student_teacher_table表

中我们只要

select * from student_teacher_table where stuID='该学生的ID',这样我们就

可以得到它的教师的ID了

***对的理解:

我们从student_teacher_table表中根据stuID拿到了与该stuID关联的teaID,

然后select * from teacher where teaID='前一步拿到的teaID'

教师的映射文件

column="stuID">

class="ts"

本文标签: 关联主键对象映射属性