`
zzc1684
  • 浏览: 1229225 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Hibernate关联配置(XML)

阅读更多

(many to one)

many-to-one关联是最常关联关系。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <many-to-one name="address" column="addressId" not-null="true"/>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key, addressId bigint not null )

create table Address ( addressId bigint not null primary key

8.2.2一(one to one

基于外键关联向一关联向多关联几乎是一的。唯一的不同就是向一关联中的外字段具有唯一性束。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <many-to-one name="address" column="addressId" unique="true" not-null="true"/>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key, addressId bigint not null unique )

create table Address ( addressId bigint not null primary key )

基于主键关联向一关联通常使用一个特定的id生成器。(注意,在个例子中我关联的方向。)

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

</class>

<class name="Address">

    <id name="id" column="personId"><generator class="foreign">

            <param name="property">person</param></generator></id>

    <one-to-one name="person" constrained="true"/>

</class>

create table Person ( personId bigint not null primary key )

create table Address ( personId bigint not null primary key )

8.2.3多(one to many

基于外键关联向一关联是一很少的情况,并不推荐使用。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <set name="addresses">

        <key column="personId" not-null="true"/>

        <one-to-many class="Address"/></set>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key )

create table Address ( addressId bigint not null primary key, personId bigint not null )

们认为对这种关联关系最好使用接表。

8.3. 使用接表的关联Unidirectional associations with join tables

8.3.1(one to many)

基于接表的向一关联 应该优先被采用。注意,通指定unique="true",我可以把多性从多多改变为多。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <set name="addresses" table="PersonAddress">

        <key column="personId"/>

        <many-to-many column="addressId" unique="true" class="Address"/></set>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId not null, addressId bigint not null primary key )

create table Address ( addressId bigint not null primary key )

8.3.2一(many to one

基于接表的向多关联关联关系可的情况下用也很普遍。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <join table="PersonAddress" optional="true">

        <key column="personId" unique="true"/>

        <many-to-one name="address" column="addressId" not-null="true"/></join>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )

create table Address ( addressId bigint not null primary key )

8.3.3一(one to one

基于接表的向一关联非常少,但也是可行的。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <join table="PersonAddress" optional="true">

        <key column="personId" unique="true"/>

        <many-to-one name="address" column="addressId" not-null="true" unique="true"/>

    </join>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )

create table Address ( addressId bigint not null primary key )

8.3.4多(many to many

最后, 向多关联.

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <set name="addresses" table="PersonAddress">

        <key column="personId"/>

        <many-to-many column="addressId" class="Address"/>

    </set>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )

create table Address ( addressId bigint not null primary key )

8.4. 双向关联Bidirectional associations

8.4.1多(one to many) / 一(many to one

双向多关联 是最常关联关系。(也是准的父/关联关系。)

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <many-to-one name="address" column="addressId" not-null="true"/>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

    <set name="people" inverse="true">

        <key column="addressId"/>

        <one-to-many class="Person"/></set>

</class>

create table Person ( personId bigint not null primary key, addressId bigint not null )

create table Address ( addressId bigint not null primary key )

8.4.2一(one to one

基于外键关联的双向一关联也很常

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <many-to-one name="address" column="addressId" unique="true"not-null="true"/>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

   <one-to-one name="person" property-ref="address"/>

</class>

create table Person ( personId bigint not null primary key, addressId bigint not null unique )

create table Address ( addressId bigint not null primary key )

基于主键关联的一关联需要使用特定的id生成器。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <one-to-one name="address"/>

</class>

<class name="Address">

    <id name="id" column="personId">

        <generator class="foreign">

            <param name="property">person</param></generator></id>

    <one-to-one name="person" constrained="true"/>

</class>

create table Person ( personId bigint not null primary key )

create table Address ( personId bigint not null primary key )

8.5. 使用接表的双向关联Bidirectional associations with join tables

8.5.1多(one to many /一( many to one

基于接表的双向一关联。注意inverse="true"可以出关联的任意一端,即collection端或者join端。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <set name="addresses" table="PersonAddress">

        <key column="personId"/>

        <many-to-many column="addressId" unique="true" class="Address"/></set>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

    <join table="PersonAddress" inverse="true" optional="true">

        <key column="addressId"/>

        <many-to-one name="person" column="personId" not-null="true"/></join>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )

create table Address ( addressId bigint not null primary key )

8.5.2一(one to one

基于接表的双向一关联,但也是可行的。

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <join table="PersonAddress" optional="true">

        <key column="personId" unique="true"/>

        <many-to-one name="address" column="addressId" not-null="true" unique="true"/>

</join>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

    <join table="PersonAddress" optional="true" inverse="true">

        <key column="addressId" unique="true"/>

        <many-to-one name="address" column="personId" not-null="true" unique="true"/>

    </join>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )

create table Address ( addressId bigint not null primary key )

8.5.3多(many to many

最后, 双向多关联.

<class name="Person">

    <id name="id" column="personId"><generator class="native"/></id>

    <set name="addresses">

        <key column="personId"/>

        <many-to-many column="addressId" class="Address"/></set>

</class>

<class name="Address">

    <id name="id" column="addressId"><generator class="native"/></id>

    <set name="people" inverse="true">

        <key column="addressId"/>

        <many-to-many column="personId" class="Person"/></set>

</class>

create table Person ( personId bigint not null primary key )

create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )

create table Address ( addressId bigint not null primary key )

 

分享到:
评论

相关推荐

    SSH三大框架整合 struts2(使用xml配置)+hibernate(使用xml配置)+spring(使用xml配置)

    它通过实体类和映射文件(hibernate.cfg.xml及.hbm.xml)将对象与数据库表关联起来。在XML配置文件中,我们指定数据源、连接池、实体类和表的映射关系。此外,使用SessionFactory和Session对象,我们可以方便地执行...

    Hibernate映射关系配置:XML方式和注解方式

    总结来说,本主题将深入探讨Hibernate框架下,如何通过XML映射文件和注解进行对象关系映射的配置,包括实体类的设计、字段映射、关联关系的建立,并可能结合具体代码实例进行解析,帮助读者理解并掌握这两种映射方式...

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

    Hibernate关联关系配置

    ### Hibernate关联关系配置详解 #### 一、一对多与多对一关系配置 在软件开发过程中,实体之间的关联关系是常见的需求之一。其中,“一对多”与“多对一”的关系尤为常见,这类关系通常用来表示实体之间的层级或...

    Hibernate注解和xml配置介绍

    Hibernate支持注解配置和XML配置两种方式来实现ORM映射和相关操作。 在Hibernate中,注解配置通常用于描述Java类和数据库表之间的映射关系,以及对象的持久化行为。通过在实体类中使用注解(如@Entity、@Table、@Id...

    hibernate配置文件详解

    hibernate.cfg.xml 文件是 Hibernate 的基本配置文件,它包含了 Hibernate 与数据库的基本连接信息。在 Hibernate 工作的初始阶段,这些信息被加载到 Configuration 和 SessionFactory 实例中。该文件的基本结构如下...

    Hibernate各种数据库关联annotatian和XML的配置集锦

    本文将深入探讨Hibernate 3.0中的数据库关联配置,包括注解和XML两种方式。 1. **注解配置** Hibernate注解提供了在实体类上直接声明数据库表映射和关联关系的方法。例如,@Entity表示一个类映射为数据库表,@...

    注解配置 javabean hibernate 关联关系

    在Hibernate中,我们使用注解来替代传统的XML配置文件,以声明对象和表之间的映射。主要的注解包括: 1. `@Entity`: 表示这个类是一个实体类,对应数据库中的一个表。 2. `@Table`: 定义实体对应的数据库表名和属性...

    hibernate XML配置文件和相应的包

    在Hibernate中,XML配置文件扮演着至关重要的角色,它定义了实体类与数据库表之间的映射关系,以及数据源、SessionFactory等核心组件的配置。 XML配置文件通常命名为`hibernate.cfg.xml`,在这个文件中,开发者会...

    Hibernate的........htm.xml和hibernatecfg.xml配置

    - "关于hibernate的.htm.xml配置.txt":可能包含对`.hbm.xml`文件的详细解释,包括如何编写映射文件,如何定义对象关系,以及如何处理各种关联关系等。 - "关于hibernate的cfg.xml配置.txt":可能涵盖`hibernate.cfg...

    hibernate xml

    "Hibernate XML"特指Hibernate配置和映射文件,这些文件通常以XML格式定义,用于描述Java类与数据库表之间的映射关系以及对象间的关联规则。 标题中的"hibernate xml"涉及到的主要知识点包括: 1. **Hibernate配置...

    hibernate的xml配置关系例子

    在这个"hibernate的xml配置关系例子"中,我们将探讨如何使用XML配置文件来定义Java对象与数据库表之间的映射关系。 1. Hibernate XML配置文件: Hibernate的核心配置文件通常是`hibernate.cfg.xml`,这个文件包含...

    memcache也spring,hibernate的配置

    - 如果单独使用Spring,需要配置Spring的缓存管理器,并关联xmemcache-spring的相关配置。 - 在需要缓存的方法上使用Spring的缓存注解。 8. **实际应用**:这种配置适用于高并发、读多写少的Web应用,例如电子...

    Hibernate关联关系hbm.xml中的相关属性

    在Hibernate中,关联关系是对象关系映射(ORM)的核心组成部分,它允许我们将数据库的表结构映射到Java对象,并管理这些...在hbm.xml文件中正确地配置这些标签和属性,可以使Hibernate更高效、更灵活地管理对象关系。

    hibernate[1].cfg.xml中配置信息详解

    **用途**:为Hibernate关联的批量抓取设置默认的数量。此配置项有助于提高数据库访问效率。 **取值**:整数值,建议取值为4、8、16等。 ##### 9. `hibernate.default_entity_mode` **用途**:指定默认的实体模式...

    hibernate。hbm.xml配置详解

    Hibernate 是一个流行的 Java 平台上的对象关系映射(ORM)...通过理解并熟练掌握 `hbm.xml` 文件的配置,开发者可以有效地利用 Hibernate 实现对象与数据库之间的无缝映射,提高开发效率并减少数据库操作的复杂性。

    Hibernate单向一对多关联映射(XML版)

    在本主题"Hibernate单向一对多关联映射(XML版)"中,我们将深入探讨如何使用XML配置来实现数据库中一个实体类对应多个实体类的关联关系。 在Hibernate中,一对多关联是一种常见的关系映射类型,它反映了数据库中的...

    hibernate关联关系2

    在本项目中,"hibernate关联关系2"是一个关于使用Hibernate框架处理数据库关联关系的实战案例。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许开发人员使用Java对象来操作数据库,极大地简化了数据库...

    生成hibernate配置文件和xml的辅助类generate

    标题中的“生成hibernate配置文件和XML的辅助类generate”指的是在Java开发中使用Hibernate框架时,为了简化配置过程,开发者可能会创建一个辅助工具类,这个类可以帮助自动生成Hibernate所需的配置文件和映射XML...

    Hibernate关联映射-one to one单向外键关联

    在Hibernate中,一对一关联可以通过配置XML映射文件或者使用注解来实现。我们先来看XML映射文件的例子。假设我们有两个实体,一个是`User`,另一个是`Account`,`User`实体拥有对`Account`的引用。在`User.hbm.xml`...

Global site tag (gtag.js) - Google Analytics