`

Hibernate Annotation注解和关系映射

阅读更多
1. Hibernate Annotation关系映射有下面几种类型:

1)一对一外键关联映射(单向)

2)一对一外键关联映射(双向)

3)一对一主键关联映射(不重要)在这不演示

在实际中很少用,使用注解@PrimaryKeyJoinColumn

意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用

注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML

映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。

因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了

4)多对一关联映射

5)一对多关联映射(单向)

6)一对多关联映射(双向)

7)多对多关联映射(单向)

8)多对多关联映射(双向)



2.介绍各种映射用法

1)一对一外键关联映射(单向)

@OneToOne(cascade=CascadeType.ALL) 

@JoinColumn(name="userid",unique=true) 

//一对一外键关联,使用@OneToOne,并设置了级联操作 

//@JoinColum设置了外键的名称为userid(数据库字段名),如果不设置,则默认为另一类的属性名+ _id
 
 //外键的值是唯一的(unique),不可重复,与另一类的主键一直
 
  


2)一对一外键关联映射(双向)

 
Class1里与上面一样,  
 
   Class2:
 
@OneToOne(mappedBy="class2",cascade=CascadeType.ALL)
 
//一对一双向关联关系,使用@OneToOne
 
//注意:需要加上mappedBy="class2",如果不加上的话,
 
//Class2也会生成一个外键(class1_id)
 
//mappedby="class2"需要指向与他关联对象的一个属性
 
//说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的
 
//主体端负责维护联接列
 
//对于不需要维护这种关系的从表则通过mappedBy属性进行声明
 
//mappedBy的值指向主体的关联属性
 
//规律:只有是双向关联关系,都加上mappedby
 
    //cascade=CascadeType.ALL级联




4)多对一关联映射

在多的一端配置:
@ManyToOne(targetEntity=Organization.class) 

@JoinColumn(name="orgid") 

//多对一注解@ManyToOne 

//targetEntity指定了关联对象 

//@JoinColumn(name="orgid")指定生产的外键的字段名,默认是org_id



5)一对多关联映射(单向)

@OneToMany 

@JoinColumn(name="orgid") 

/**
 
 * 一对多注解@OneToMany(单向)
 
 * 如果只写@OneToMany的话,hibernate会建一张中间表来
 
 * 维护他们之间的关系,
 
 * 加上@JoinColumn(name="orgid"),则不会建中间表,他会在
 
 * 多的一端加上外键orgid,来维护他们之间的关系
 
 */
 

6)一对多关联映射(双向)

一端:


@OneToMany(mappedBy="org")
 
@JoinColumn(name="orgid")
 
/**
 
 * 一对多双向,在一的一端中设置mappedBy
 
 * 说明多的一端为主导
 
 * 如果指定了外键字段名称,则多的一端也需要指定相同的字段名称
 
 */



多端:

@ManyToOne
 
@JoinColumn(name="orgid")
 
/**
 
 * 一对多双向
 
 * 需要指定外键与一的一端给的外键名称一致,@JoinColumn(name="orgid")
 
 * 也可以不指定,如果在多的一端不指定,则一的一端也不能指定
 
 * 否则为生成两个外键
 
 */



7)多对多关联映射(单向)




@ManyToMany
 
/**
 
 * 多对多映射:注解@ManyToMany(单向)
 
 * 默认情况下,hibernate会自动的创建一张中间表,
 
 * 来维护多对多关系
 
 * 默认中间表的名称 :user_role中间表,字段的名称user_id role_id
 
 * 如果想更换表名和字段名称,注解如下:
 
 */
 
@JoinTable(name="t_u_r",
 
joinColumns={@JoinColumn(name="u_id")},
 
inverseJoinColumns={@JoinColumn(name="r_id")}
 
)



8)多对多关联映射(双向)  User端


@ManyToMany
 
/**
 
 * 多对多映射:注解@ManyToMany(单向)
 
 * 默认情况下,hibernate会自动的创建一张中间表,
 
 * 来维护多对多关系
 
 * 默认中间表的名称 :user_role中间表,字段的名称user_id role_id
 
 * 如果想更换表名和字段名称,注解如下:
 
 */
 
@JoinTable(name="t_u_r",
 
joinColumns={@JoinColumn(name="u_id")},
 
inverseJoinColumns={@JoinColumn(name="r_id")}
 
)
 
/**
 
 * @JoinTable(name="t_u_r",
 
 * 指定中间表的表名
 
 * joinColumns={@JoinColumn(name="u_id")},
 
 * 指定当前对象的外键
 
 * inverseJoinColumns={@JoinColumn(name="r_id")}
 
 * 指定关联对象的外键
 
 */



Role端

@ManyToMany(mappedBy="role")
 
/**
 
 * 多对多,双向关联映射 

 */



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate Annotation jar

    现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的...

    hibernate _annotation 注解编程

    ### Hibernate Annotation注解编程知识点详解 #### 一、概述与设置环境 - **概述**:Hibernate 是一个流行的 Java 持久层框架,它提供了一种面向对象的方式来处理数据库操作。Hibernate 支持多种元数据定义方式,...

    Hibernate Annotation 笔记 总结 注解

    1. **注解替代XML映射**:在Hibernate 3.2及更高版本中,引入了Annotation支持,开发者可以直接在Java实体类上使用注解来定义持久化字段和关系,不再需要创建单独的`.hbm.xml`映射文件。 2. **依赖**:使用...

    hibernate annotation hibernate3

    在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇将深入探讨Hibernate 3版本中的注解使用,帮助开发者理解如何利用注解进行数据持久化,提高开发效率。 一、...

    最全的Hibernate Annotation API文档

    在Hibernate中,注解(Annotation)是一种声明式的方法,用于配置实体类、属性以及它们与数据库表之间的映射关系。本文将深入探讨“最全的Hibernate Annotation API文档”中的关键知识点。 一、实体类(Entity) 在...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    Hibernate Annotation库

    Hibernate Annotation库是Java开发中用于简化对象关系映射(ORM)的一个重要组件,它使得开发者能够在Java类上直接使用注解来定义数据库映射,从而避免了传统的XML配置文件。这三个特定的jar包是Hibernate ORM框架中...

    Hibernate Annotation 中文文档

    Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种更加内聚和直接的方式,使得...

    让Hibernate同时支持xml和注解两种映射方式

    Hibernate支持两种主要的映射方式:XML映射文件和注解映射。然而,默认情况下,一个项目只能选择其中一种方式进行配置。但有时候,根据项目需求,可能需要同时使用XML和注解映射。在这种情况下,我们需要进行一些...

    Hibernate Annotation 学习笔记

    而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML配置文件的繁琐工作,使得开发过程更加简洁高效。本文将通过一个实际操作的实例,逐步介绍Hibernate Annotation的基础...

    hibernate-Annotation.jar

    在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...

    Hibernate Annotation入门

    而Hibernate Annotation是Hibernate的一个重要特性,它通过在Java类和字段上添加注解来简化数据库表和实体类之间的映射配置。这篇博文将带你了解如何使用Hibernate Annotation进行开发。 首先,我们需要理解Java...

    hibernate annotation api chm文件

    Hibernate Annotation API是Hibernate ORM的一种扩展,允许开发者使用Java注解(Annotations)来定义对象-关系映射。这种API避免了传统的Hibernate XML配置文件,使得ORM配置更加内聚且易于维护。 2. **核心注解**...

    Hibernate distribution and annotation

    2. **映射机制**: Hibernate支持XML映射文件(hbm.xml)和注解映射两种方式,让对象与数据库表之间建立映射关系。 3. **Session和Transaction**: Session是Hibernate的主要工作单元,负责保存、更新和检索对象。...

    sping hibernate Annotation(注释配置) demo(例子)

    总结来说,这个 "Spring Hibernate Annotation demo" 展示了如何在 Spring 框架中使用注解配置来管理依赖,以及如何利用 Hibernate 的注解进行数据持久化。同时,它还涉及到了 Flex 前端与后端的交互。通过学习这个 ...

    hibernate-annotation

    在传统的Hibernate应用中,我们通常使用XML文件来描述对象和表之间的映射关系。然而,随着Java 5的发布,注解成为了一种更简洁、更直观的元数据表示方式。Hibernate注解就是利用这种方式,将对象的映射信息直接写在...

    HibernateAnnotation

    其中,HibernateAnnotation技术是指在Java类上使用注解来替代传统的XML配置文件,这不仅简化了配置过程,还提高了代码的可读性和维护性。 ### 核心知识点详解 #### 1. `@Entity` 注解 `@Entity` 是用于标记一个...

    hibernate annotation jar

    总之,“Hibernate 3.3 Annotation JAR”是Hibernate ORM框架的一个重要组成部分,它通过引入Java注解,使得开发人员能更方便地进行对象关系映射,提高了开发效率并降低了项目的维护成本。而文件“user1”则可能是一...

    Hibernate4注解全教程

    Hibernate4注解是一种在Java对象模型中直接使用注解来配置持久化层的技术,与传统的XML配置文件方法相比,这种方式提供了更加简洁和直观的配置方式。Hibernate4注解主要依赖于Hibernate Annotation库,支持EJB3持久...

Global site tag (gtag.js) - Google Analytics