`
david01205
  • 浏览: 86736 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转: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

    而Hibernate注解则是其在ORM(对象关系映射)领域的进一步进化,它允许开发者将元数据直接嵌入到Java类和属性的声明中,从而避免了XML配置文件的繁琐。本篇将详细阐述Hibernate注解的相关知识。 一、Hibernate注解...

    hibernate-distribution 3.3.2+annotation3.4.0+slf4j-1.5.8.rar )

    2. **对象关系映射**:Hibernate通过XML映射文件或注解来描述Java类与数据库表之间的映射关系,实现了数据的透明访问。3.3.2版本中,注解支持更为成熟,使得代码更简洁。 3. **查询语言HQL**:Hibernate Query ...

    hibernate-annotation-helloword

    **hibernate-annotation-helloworld** 是一个基于Hibernate框架,使用注解方式实现的Hello World示例项目。在Java世界中,Hibernate是一个流行的持久层框架,它极大地简化了数据库操作,尤其是在对象关系映射(ORM)...

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    在Hibernate中,注解用于将Java类与数据库表关联,以及将类的属性与表的列对应起来,从而实现了对象关系映射(ORM)。 1. **实体类注解**: - `@Entity`:标记一个Java类为数据库中的一个实体表,相当于传统的...

    hibernate-annotation 所需要的jar包

    Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来处理数据库操作。在Java开发中,Hibernate与Annotation的结合使用极大地简化了数据持久化的复杂性,使得开发人员无需编写大量...

    hibernate-Annotation.jar

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

    Hibernate-Annotation-3.4.0帮助文档

    Hibernate注解是一种元数据方式,允许开发者直接在Java类和属性上声明数据库相关的元信息。这包括实体类、字段、关联等的定义,使得数据库模型与Java对象模型之间的映射更加紧密。 **2. 主要注解** - `@Entity`: ...

    hibernate-annotations 相关jar包

    在Hibernate中,Hibernate Annotations是一个重要的组成部分,它引入了JPA(Java Persistence API)的注解,使得对象-关系映射更加简洁且无需XML配置。 **一、Hibernate Annotations简介** Hibernate Annotations是...

    hibernate-annotation3.4.0 + hibernate-distribution3.3.2 + slf4j-1.5.8.rar

    在3.4.0的Hibernate注解与3.3.2的Hibernate核心之间进行集成,需要确保所有依赖的JAR文件正确配置,包括Hibernate的各个模块(如hibernate-core、hibernate-entitymanager等)以及JTA(Java Transaction API)和JPA...

    hibernate-release-4.2.12.Final libs

    - Annotation:元数据注解,用于标记实体类和属性,定义映射关系。 4. 应用场景与实践: - 数据库操作:通过Entity定义实体类,使用Annotation指定数据库表和字段映射,通过EntityManager实现CRUD操作。 - 查询...

    Hibernate -annotation 学习笔记

    Annotation是Hibernate提供的一种元数据方式,允许在Java类和字段上直接添加注解,以声明对象与数据库表之间的映射关系,从而替代传统的XML配置文件。 ### 第 1 课 课程内容 学习Hibernate Annotation,首先要理解...

    hibernate_annotation

    在 Hibernate 中,有多种方式可以定义对象与数据库表之间的映射关系,其中使用注解 (Annotation) 的方式因其简洁性和易读性而备受开发者青睐。 #### 二、准备工作 为了使用 Hibernate 的注解映射功能,我们需要...

    hibernate-annotations-3.4.0.GA.rar

    Hibernate注解是基于Java 5引入的元数据机制,允许在源代码中嵌入元数据信息,用于描述对象如何映射到数据库。例如,`@Entity`注解表示一个类作为数据库中的表,`@Table`定义表名,`@Id`标记主键字段。 2. **实体...

    hibernate annotations3.4.0 GA.rar

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

    Hibernate Annotation jar

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

    hibernate annotation 中文文档

    Hibernate 通过注解的方式简化了实体Bean的配置过程,使得开发者可以更方便地管理数据库表与实体Bean之间的映射关系。 ##### 2.2 用 EJB3 注解进行映射 EJB3 注解是 Hibernate 用来标注实体Bean的一种标准方式,它...

    Hibernate-Annotation中文教程.pdf

    借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件,一切都会按照您的想法来定义——注释直接嵌入到您的 Java 类中,并提供一种强大及灵活的方法来声明持久性映射。 Hibernate Annotation 的优点...

    Hibernate-Annotation初步.rar

    使用Hibernate注解,我们可以直接在实体类上声明如@Entity、@Table、@Id等注解,来标识这个类是一个数据库表的映射,它的主键是什么,以及属性如何映射到表的列。例如: ```java @Entity @Table(name = "User") ...

    Hibernate Annotation 笔记 总结 注解

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

Global site tag (gtag.js) - Google Analytics