Hibernate的数据映射关系

原创 2016年12月19日 21:42:33

1单向 关系 ,1 - N 1 - 1 N-1 N -N

a 单向N-1,只需要从N的一端 访问到 1的一端,1 特指公共的地方,
使用方法:在N的一端增加一个1的实体

(1)无连接表映射,在N的的一端数据表增加一个外键列,
(2)有连接表映射,强制利用join产生连接表,
<join table="" >
        <key column=""/>
        name 表示类中属性的名字
        <many-to-one name="" column="" class="" cascade=""/>
    </join>

b 单向 1-1 只是将N-1 的N端 设置为 唯一,即 设置属性 unique=”true”
1、基于外键 2、基于连接表

c 单向 1-N 基于一个集合属性,少用 1-N单向关联,多用1—N双向关联
使用方法 在 1 的一端添加集合属性
1 无连接表的连接

<set name="addresses">
        <key column="person_id"/>
        <one-to-many class="Address"/>
    </set>

2 有连接表的1- N 单向关联 ,使用 ,将unique设置为 true

<set name="addresses" table="person_address">
            <key column="person_id"/>
            <many-to-many  class="Address" column="address_id" unique="true"/>
</set>

d 单向 N - N 端 必须用 连接表,并且控制端 添加 set 属性 <many-to-many class="" column="" />

<set name="addresses" table="person_address">
            <key column="person_id"/>
            <many-to-many class="" column="" />
        </set>

双向 1-N ,Hibernate推荐使用双向 1—N,并且 N这一端为 控制端

a 双向 1-N ,在 1的一端 增加 N ,在N的一端 增加 1,并且 1 为外键,

(1)无连接表的双向 1-N
1端操作

<set name="" inverse="true"> <!--不控制关系 -->
<key column="person_id"/>
<one-to-many class="Address"/>
</set>

N端操作

<many-to-one name="person" column="person_id" class="person" not-null="true" />

持久化 1-N关系,先 持久化 1 ,然后 通过N端设置1端,建立关联关系。

(2)有连接表的双向 1—N
    1 的一端 设置为 many-to-many  unique设置为 1 
    <set name="" inverse="true" table="person_address">
        <key column="person_id"/>
        <many-to-many class="" unique="true" column="address_id"/>
    </set>

    N 的一端 设置为 join
    <join table="person_address">
        <key="address_id"/>
        <many-to-one name="person" column="person_id" not-null="true"/>
    </join>

b 双向 N - N
使用方法 两端 都添加 set 属性,必须使用连接表

<set table="" name="addresses"/>
    <key column="person_id"/>
    <many-to-many  column="address_id" class="" />
</set>

另外一个N端 对

`

版权声明:本文为博主原创文章,未经博主允许不得转载。

hibernate映射关系总结

注意:这里的关系是指:对象之间的关系,并不是指数据库的关系,-----红色重要          存在以下关系: 1、    一对一 u       单向(主键、外键) u  ...
  • u012188794
  • u012188794
  • 2015年03月12日 15:26
  • 679

Hibernate(七)实现多对多关联映射关系

直接以老师与学生的关系为例。在多对多关联关系中,其中一方都可通过Set保留另一方的所有信息,这样的关联是双向关联。在多对多关联关系中,也只能是双向关联。老师和学生分别对应一张表,通过一张有双方id的中...
  • u011731233
  • u011731233
  • 2015年07月16日 20:28
  • 1769

Hibernate中的各种关系映射与配置

组合主键映射 组合主键映射 ScoreId.java public class ScoreId implements Serializable{ private...
  • qq_23994787
  • qq_23994787
  • 2017年06月20日 06:35
  • 223

Hibernate数据映射关系

对象关系映射(Object Relational Mapping)是将关系数据库中表的数据映射成对象,方便开发人员以面向对象思想操作数据库的技术。Hibernate就是实现ORM的一种强大框架,与Sp...
  • picway
  • picway
  • 2016年11月21日 17:20
  • 368

Hibernate(三)——框架中的关系映射

在设计数据库时我们会考虑,表与表之间的关系,例如我们前边经常提到的一对一,一对多,多对多关系,在数据库中我们通过外键,第三张表等来实现这些关系。而Hibernate时间实体类和数据库中的表进行的映射,...
  • liujiahan629629
  • liujiahan629629
  • 2014年03月18日 23:47
  • 5777

Hibernate中映射关系 一对一 详解

一对一有两种关联方式:主键关联 主键既是主键也是外键 一对一主键关联: 表中: 一对一 关联映射,我们在数据库表中设计的时候,应该是一个表中关联另一张表中的id  外键 不会各自拥有。这样符合数...
  • u010908743
  • u010908743
  • 2015年02月28日 11:49
  • 974

Spring整合Hibernate映射关系注解版 -- 实例

1.多对多
  • he90227
  • he90227
  • 2014年08月20日 17:31
  • 2393

hibernate标注

基于Hibernate用标注(annotations)描述映射关系实体类型用标注:@Entity实体对应的表用标注:@Table映射实体类中表示主键的属性的标注是:@Id映射实体类中表示普通属性的标注...
  • yangxinxia
  • yangxinxia
  • 2008年05月18日 14:13
  • 2829

Hibernate总结之二实体与表的映射关系

       今天趁自己的心情不错,顺便来总结一下有关hibernate中实体与表的映射关系。写此文章有三个目的:第一,总结一下hibernate为以后查看方便。第二,通过此文章我相信能起到抛砖引玉的...
  • mayiha85
  • mayiha85
  • 2010年02月05日 17:11
  • 219

浅谈JavaEE中的Hibernate中的四种关系映射(三)

今天我们一起来探讨一下有关Hibernate四种关系映射,大家可能会有疑惑,关系映射不就是只有三种(一对一,一对多,多对多)吗?这里我们再多说一个继承映射关系,虽然它使用频繁度没有前三个那么多,但是它...
  • u013064109
  • u013064109
  • 2016年07月10日 16:11
  • 3069
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate的数据映射关系
举报原因:
原因补充:

(最多只允许输入30个字)