甜咖啡

我的IT空间

hibernate中几种映射关系 讲解1

通常在数据库或者现实的实体关系中存在3种现象: 1-1  ,1-N , N-N  其中1对1的关系 好比一个丈夫 只有一个 妻子 ,一个妻子也只有一个老婆,一对多的关系 就像 1个人能有多个 房子,而一个房子只能有一个房主, 多对多 好比一个班有多个老师来教,而一个老师能教多个班。

在实体设计中 也存在这样映射关系,一对一 用的比较少,一对多或者 多对多 用的比较常见。

先来介绍下一对一 ;

 每种映射关系都存在 有连接表和无连接表 两种情况,下面我都讲解 无连接表的情况。

第一种情况; 基于外键的双向 关联

什么意思呢; 基于外键的关联好比 一个表的外键是另一个表的主键,学过数据库的朋友应该都知道这种主从表关系(父子表关系)。

数据的表设计就不多做解释了,下面着重讲解 映射文件的写法;

在hibernate框架中的我们都知道 一个表应该对应一个实体 即模型(bean) 所有主从表的话基本要设计两个bean对象,那么每个bean对象就必须写上一个xml问价作为hibernate框架 控制的桥梁。

在主表对应的bean对象的 xml文件的写法如下;

<hibernate-mapping package="lee‘>

<class name="对应bean对象的全路径" table=“对应的表名">

    <id name="id的名字" column="表中的字段名" > <!-- 如果 两个的名字一样的则column可以不写-->

       <ganerator class="native” /> 主键生成策略</id>

<property name="其他的属性名">

........

<!-- 关键代码-->

    主bean 类的写法加上一个属性 表示 另一个 bean的 变量,在子bean中同样如此

    <one-to-one name="对应子表中的对象的变量名"

" class="另一个bean对象的全路径" cascade="all" property-ref="在另一个bean中代表本类的变量名"></one-to-one>  cascade="all"表示 同步两个表

</class>

</ hibernate-mapping>

另一个bean ,即子表bean的xml文件的写法

<前面和主bean一样>

主键生成策略:foreign

<many-to-one name="对应主bean对象的变量名" unique=“true”表示唯一外键

column=“外键名”

class="主bean的全路径"></many-to-one>

 

2:基于主键的双向 1-1关联

什么是基于主键 ; 即一个表的主键是另一个的主键,一个的主键变化 另一个表也同时变化

xml写法

<one-to-one name="另一个bean的变量名" class=“另一个bean的全路径” cascade="all">

posted on 2011-03-26 23:39 甜咖啡 阅读(770) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(1)

我参与的团队

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜