@经常使用属性说明:

    @Entity:实体类

    @Table:指定相应数据表

    @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态

    @Column:配置普通属性,除了主键外,java基本类型的属性

    @Base:普通属性的载入方式

    @GeneratedValue:主键生成策略

    @Temporal:日期类型(DATE,TIME还是TIMESTAMP),假设属性类型是java.util.Date(是以上3个类的父类)类型时才须要使用该@声明详细的日期类型

    @Transient:暂时属性

    @Version:版本号属性,配置乐观锁



hibernate实体关联映射:

    一对一单向:

        一段:还有一端实体属性:@OneToOne(cascade),@JoinColumn(name=外键名,unique=true)

        还有一端:

        一段数据库:还有一端实体的外键:表名_id

        还有一端数据库:

    一对一双向:

        一段:还有一端实体属性:@OneToOne(cascade),@JoinColumn(name=外键名,unique=true)

        还有一端:还有一端实体属性:@OneToOne(mappedBy=还有一端属性名)

        一段数据库:还有一端实体的外键:表名_id

        还有一端数据库:

    一对一双向(主键):

        一段:@Id,@GeneratedValue,还有一端实体属性:@OneToOne,@PrimaryKeyJoinColumn

        还有一端:@Id,不能使用@GeneratedValue(与还有一端使用同样主键),还有一端实体属性:@OneToOne,@PrimaryKeyJoinColumn

        一段数据库:没有关联,依据主键推断

        还有一端数据库:没有关联,依据主键推断

    一对多单向:

        一段:多端实体集合属性:@OneToMany(fetch,cascade,targetEntity(使用范型能够省略)),@JoinColumns(value={@JoinColumn(name="外键名"),referencedColumnName="还有一端id"})

        多端:

        一段数据库:

        多端数据库:一段实体的外键:表名_id

    多对一单向:

        一段:

        多端:一段实体属性:@ManyToOne(CascadeType,fetch),@JoinColumn(外键名)

        一段数据库:

        多端数据库:一段实体的外键:表名_id

    一对多双向(多对一双向):

        一段:多端实体集合属性:@OneToMany(mappedBy="多端实体类中的一段属性名")

        多端:一段实体属性:@ManyToOne(fetch,cascadeType),@JoinColumn(外键名)

        一段数据库:

        多端数据库:一段实体的外键:表名_id

    多对多单向:

        多段:还有一端实体集合属性:@ManyToMany(fetch,cascade,),@JoinTable(name,JoinColumns,inverseJoinColumns)

        还有一多端:

        多段数据库:

        还有一端端数据库:

        中间表(表1_表2):外键1:表1_id,外键2:表2_id

    多对多双向:

        多段:还有一端实体集合属性:@ManyToMany(fetch,cascade,),@JoinTable(name,JoinColumns,inverseJoinColumns)

        还有一多端:@ManyToMany(mappedBy=还有一多端实体集合属性名)

        多段数据库:

        还有一端端数据库:

        中间表(表1_表2):外键1:表1_id,外键2:表2_id





1 双边关系中,控制权一般交给多端,由mappedBy指定,配置信息要到多端找

2 mappedBy把控制权交给还有一端(还有一端中的属性名),还有一端配置同单向配置全然同样

3 多对多属性必须使用@JoinTable指定中间表的配置,当中name指定表名,joinColumns指定该表与中间表的相应关系,inverseJoinColumns指定还有一端与中间表的关系

4 mappedBy表示该属性是反向属性,与还有一端实体类的指定的属性相应

5 Map映射:集合属性能够使用Map类型,Map使用索引-值属性对,速度快,配置时跟@OneToMany,@ManyToMany一样,仅仅需再添加�@MapKey就可以,如:

    @MapKey(name = "name")//配置数据库列名,使用该字段索引数据

    private Map<String,Student> students = new new HashSet<String,Student>();

hibernate 实体关系映射笔记的更多相关文章

  1. Hibernate实体关系映射(OneToMany单边)——完整实例

    单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...

  2. Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例

    双边关系是最常见的配置.在多方有一方的引用,一方也有多方的引用.双边关系能够很方便地查询数据.看一个班级与学生的双边关系. 班级(Clazz类)与学生(Student类):一对多关系.班级中有学生属性 ...

  3. hibernate(3) —— 关系映射

    hibernate中关系映射指的是实体类与实体类间的关系.和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系. 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是 ...

  4. Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

    原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50 很多人不知道怎么用 IntelliJ IDE ...

  5. JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

    JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...

  6. Hibernate注解关系映射

    Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid)   1)一对一外键关联映射(单向) @O ...

  7. [刘阳Java]_MyBatis_实体关系映射_第8讲

    MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能.下面我们就来介绍一下如何使用MyBatis的实体关系映射 1.MyBatis实体关系映射 ...

  8. OrchardNoCMS实体关系映射扩展

    在OrchardNoCMS中,默认的系统会把实体关系映射保存到mappings.bin文件中. 如果不进行任何修改,默认的可以自动保存关系映射的model是有很大限制的. 条件是model的命名空间必 ...

  9. JPA总结——实体关系映射(一对多@OneToMany)

    JPA总结——实体关系映射(一对多@OneToMany) 注意:本文出自“阿飞”的博客,如果要转载本文章,请与作者联系! 并注明来源: http://blog.sina.com.cn/s/blog_4 ...

随机推荐

  1. Ui篇--layout_weight体验(实现按比例显示)

    在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...

  2. 24、AR技术

    什么是AR 在介绍增强现实(AR)之前,需要先说说虚拟现实(VR) 虚拟现实是从英文Virtual Reality 一词翻译过来的,简称VR.VR 技术是采用以计算机技术为核心的技术,生成逼真的视.听 ...

  3. 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(6)

    创建一个新文档(Creating a new document) 现在我们将尝试索引一些文档.对于我们的示例,让我们想象我们正在为我们的博客建立某种CMS.实体之一是博客的文章.使用JSON记法,在以 ...

  4. XTUOJ1247 Pair-Pair 预处理+暴力

    分析:开个1000*1000的数组,预处理矩阵和,然后分类讨论就好 时间复杂度:O(n) #include <cstdio> #include <iostream> #incl ...

  5. Unicode转为UTF8

    Unicode转换为UTF8 要说这个转换也简单,使用WideCharToMultiByte两次或者直接一次就可以转换. 今天在弄VLC的时候,由于VLC的视频文件名使用UTF8编码,因此当路径中包含 ...

  6. Visual Assist X 破解步骤

    1. 下载VA安装包,并点击exe文件安装(附下载地址:http://down.51cto.com/data/766817) 2. 将Visual Assist X Patch文件复制到C:\User ...

  7. scribe、chukwa、kafka、flume日志系统对比 -摘自网络

    1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁 ...

  8. WINRAR评估版本弹出框消除

    网上有很多WINRAR评估版本,这些版本下载安装了之后总会有些广告弹出,让人很烦恼,现在教大家一个方法消除这些弹出框. 复制以下代码:    RAR registration data SeVeN U ...

  9. 咏南中间件支持DELPHI低版本开发的两层程序平稳升级到三层

    提供DELPHI中间件及中间件集群,有意请联系. N年前,我们用DELPHI低版本开发的两层程序(比如工厂ERP系统),现在仍然在企业广泛地得到使用,但老系统有些跟不上企业的发展需要了.主要表现在:虽 ...

  10. [C语言 - 2] C语言变量

    A.变量的作用域: 1.局部变量:在函数或者代码块内部定义的变量 作用域:从定义处到代码块结束 生命周期:从定义处分配控件,代码块结束后被回收 局部变量没有默认值,要自己初始化   2.全局变量:在函 ...