`

Hibernate 中关系与映射

阅读更多
Hibernate笔记=>一对多关系的映射
http://blog.sina.com.cn/s/blog_3d7bed65010004kq.html

Hibernate笔记=>对象与关系的映射基础
http://blog.sina.com.cn/s/blog_3d7bed65010004kp.html~type=v5_one&label=rela_prevarticle

Hibernate笔记=>继承关系的映射
http://blog.sina.com.cn/s/blog_3d7bed65010004lx.html~type=v5_one&label=rela_nextarticle

Hibernate笔记=>检索相关细节问题
http://blog.sina.com.cn/s/blog_3d7bed65010004o9.html~type=v5_one&label=rela_nextarticle

-----------------------------------------------------------------

Hibernate之映射继承关系(六)
http://tech.ccidnet.com/art/297/20050922/339201_1.html

Hibernate 实体关联关系映射----总结
http://lavasoft.blog.51cto.com/62575/39398

-----------------------------------------------------------------

总结:
一.类的关联关系,在hibernate中反映

1.单向关联与双向关联
单向关联是类的一方拥有对方的引用.
双向关联是类的双方都拥有对方的引用.

2.关系分类:
1对多:   custom-->order; custom中有存放order的list对象的属性.
多对1:   order-->custom; order中有custom对象的属性.
多对多:  1个老师有多个学生,1学生又有多个老师.

1对1:    是特殊的多对1关系.

3.表的实现:
[1]外键关联:多端有外键去关联1端.

一个人(Person)对应多个地址(Address)
mysql> desc address_1nfk;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| addressid     | int(11)      | NO   | PRI | NULL    | auto_increment |
| addressdetail | varchar(255) | YES  |     | NULL    |                |
| personid      | int(11)      | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
 
mysql> desc person_1nfk;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| personid | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(255) | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+


多个人(Person)对应一个地址(Address)
mysql> desc address_n1kf;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| addressid     | int(11)      | NO   | PRI | NULL    | auto_increment |
| addressdetail | varchar(255) | YES  |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
 
mysql> desc person_n1kf;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| personid  | int(11)      | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255) | YES  |     | NULL    |                |
| age       | int(11)      | YES  |     | NULL    |                |
| addressId | int(11)      | YES  | MUL | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+



[2]主键作外键关联:(只适用于一对一的关系中)

一个人(Person)对应一个地址(Address)
mysql> desc address_11pk;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| addressid     | int(11)      | NO   | PRI | NULL    | auto_increment |
| addressdetail | varchar(255) | YES  |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
 
mysql> desc person_11pk;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| personid | int(11)      | NO   | PRI |         |       |
| name     | varchar(255) | YES  |     | NULL    |       |
| age      | int(11)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+


[3]连接表关联:建一连接表,内容是person表和address表的id,(多对多一定是用连接表)

多对多的例子
mysql> desc person_nn;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| personid | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(255) | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
 
mysql> desc join_nn;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| personid  | int(11) | NO   | PRI |         |       |
| addressid | int(11) | NO   | PRI |         |       |
+-----------+---------+------+-----+---------+-------+
 
mysql> desc person_nn;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| personid | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(255) | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+


二,类的继承关系在hibernate中的表示

1. 1子类一张表   不支持多态查询。
2. 全一张表      支持多态,查询最快,维护难。
3. 1类一表       支持多态,维护易。

分享到:
评论

相关推荐

    Hibernate对象关系映射

    Hibernate对象关系映射一对多 很基础等文档

    Hibernate的关联关系映射图解

    Hibernate4中映射关系图解。

    Hibernate_关联关系映射配置详解

    Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者

    Hibernate集合映射与关联关系

    在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合...

    hibernate的多种映射关系

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,消除了直接编写 SQL 的需要。在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系...

    Hibernate教程09_关系映射之组件映射

    在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射中的组件映射。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它允许开发人员以面向对象的方式处理数据库操作,极大地简化了数据层...

    hibernate实体关联关系映射

    实体关联关系映射是指在Hibernate框架下如何将Java对象之间的关联关系映射到数据库表中的过程。根据实体之间关联关系的不同,Hibernate提供了多种映射方式: 1. **一对一关联**(One-to-One) - 外键单向关联 - ...

    hibernate复杂关系的映射

    在这个场景中,我们关注的是Hibernate如何处理复杂的对象关系映射,特别是涉及Employer(雇主)、Employment(雇佣期间)和Employee(员工)之间的关系。我们将深入探讨这些实体类及其在映射文件中的配置。 首先,`...

    JAVA数据类型与Hibernate的类型映射

    在实际应用中,Hibernate还提供了一些高级映射机制,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)的关系映射。这些映射通过@OneToOne、@OneToMany、@ManyToOne和@...

    hibernate的关系映射

    **二、Hibernate关系映射的类型** 1. **一对一(OneToOne)**: 表示一个实体对应另一个实体的唯一实例。这可以通过在两个类中都定义`@OneToOne`注解来实现,并通过`mappedBy`属性指定被引用的一方。 2. **一对多...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    Hibernate教程20_关系映射案例三

    1. **关系映射**:Hibernate允许我们将数据库中的表与Java类之间的关系映射起来,以便于我们在程序中操作数据。关系映射主要包括一对一、一对多、多对一和多对多四种关系。 2. **配置文件**:在Hibernate中,`...

    Hibernate关系映射

    **标题:“Hibernate关系映射”** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式,极大地简化了数据持久化的复杂性。"多对一"关系映射是Hibernate...

    hibernate 映射关系学习入门 多对多实体映射

    Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,从而实现了面向对象编程和关系数据库之间的桥梁。Hibernate提供了强大的查询语言HQL(Hibernate Query Language)以及 ...

    hibernate关联关系映射

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。"hibernate关联关系映射"是Hibernate的核心概念之一,它定义了如何...

    hibernate中容器映射技术

    在Hibernate中,Set接口的实现类如HashSet和TreeSet通常用于一对多或多对多的关系映射。例如,一个用户可以有多个订单,订单也可以属于多个用户,这就形成了双向多对多关系。在映射文件中,我们通常使用`<set>`标签...

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的关联关系,...

Global site tag (gtag.js) - Google Analytics